Php 画一条穿过中间一点的直线
我需要画一条从a点到C点的直线,这条直线必须穿过B点 问题是我只得到了A和B的坐标,而不是C。对于点C,我只有“x”坐标 就像我必须画一条从a到B的线,然后把它延伸到CPhp 画一条穿过中间一点的直线,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,
<?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!那太好了。非常感谢:)天哪!那太好了。非常感谢:)