Php 画一条穿过中间一点的直线

Php 画一条穿过中间一点的直线,php,Php,我需要画一条从a点到C点的直线,这条直线必须穿过B点 问题是我只得到了A和B的坐标,而不是C。对于点C,我只有“x”坐标 就像我必须画一条从a到B的线,然后把它延伸到C <?php $im = imagecreate( 600, 600 ); $background= imagecolorallocate( $im, 25, 25, 75 ); imagefill( $im, 0,0, $background ); $white= imagecolorallocate( $im, 255,

我需要画一条从a点到C点的直线,这条直线必须穿过B点

问题是我只得到了A和B的坐标,而不是C。对于点C,我只有“x”坐标

就像我必须画一条从a到B的线,然后把它延伸到C

<?php
$im = imagecreate( 600, 600 );
$background= imagecolorallocate( $im, 25, 25, 75 );
imagefill( $im, 0,0, $background );
$white= imagecolorallocate( $im, 255, 255, 255 );

$a= array( 100, 200 );
$b= array( 200, 176 );
$c= array( 300, '' ); // This is to be calculated

imageline( $im, $a[0], $a[1], $c[0], $c[1], $white );

header("Content-Type: image/jpeg"); imagejpeg($im); exit();
?>

直线必须从A开始,接触B,并在C结束。。。如何计算点c的“y”坐标?
谢谢

这方面的数学计算相对简单。您可以按如下方式计算
c
的y值:

cy = ay + (by - ay) * (cx - ax) / (bx - ax)
这是通过将y值“扩展”到与我们扩展x值相同的比率来实现的。我们知道向量
a->c
a->b
的比率,因为我们有三个
x
值。我们只需要对
y
值应用相同的比率

对于给定的数据,即:

______________________
/这是比例\
|                      |
cy=ay+(by-ay)*(cx-ax)/(bx-ax)
= 200 + (176 - 200) * (300 - 100) / (300 - 200)
= 200 +    -24      *    200      /    100
=                 152

请注意,如果直线是垂直的(
a
b
共享相同的
x
值),这将不起作用,因为这会导致被零除。这是不可修复的,因为它意味着
c
也必须具有相同的x值,因此其y值可以是任何值。

这方面的数学相对简单。您可以按如下方式计算
c
的y值:

cy = ay + (by - ay) * (cx - ax) / (bx - ax)
这是通过将y值“扩展”到与我们扩展x值相同的比率来实现的。我们知道向量
a->c
a->b
的比率,因为我们有三个
x
值。我们只需要对
y
值应用相同的比率

对于给定的数据,即:

______________________
/这是比例\
|                      |
cy=ay+(by-ay)*(cx-ax)/(bx-ax)
= 200 + (176 - 200) * (300 - 100) / (300 - 200)
= 200 +    -24      *    200      /    100
=                 152

请注意,如果直线是垂直的(
a
b
共享相同的
x
值),这将不起作用,因为这会导致被零除。这是不可修复的,因为它意味着
c
也必须具有相同的x值,因此其y值可以是任何值。

OMG!那太好了。非常感谢:)天哪!那太好了。非常感谢:)