我需要画一条从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”坐标? 感谢
答案 0 :(得分:0)
这方面的数学相对简单。您可以按如下方式计算c
的y值:
cy = ay + (by - ay) * (cx - ax) / (bx - ax)
这通过将y值“扩展”与我们扩展x值的相同比率来起作用。我们知道向量a->c
与a->b
的比率,因为我们有三个x
值。我们只需要将相同的比率应用于y
值。
对于您的给定数据,即:
______________________
/ This is the ratio \
| |
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值可以是任何东西。