C++ 到 PHP 翻译
Posted
技术标签:
【中文标题】C++ 到 PHP 翻译【英文标题】:C++ to PHP Translation 【发布时间】:2014-01-23 04:32:07 【问题描述】:我试图理解这里列出的答案(复制/粘贴在下面):https://***.com/a/3838294/1541165
问题是它在 C++ 中,我想在 php 中应用所描述的解决方案。
有人可以帮忙翻译一下吗?就像A.x - B.x
在 PHP 中的样子?
第一步;移动原点。
x' = A.x - B.x y' = A.y - B.y
第二步,进行旋转
x'' = x' * cos(C) - y' * sin(C) = (A.x-B.x) * cos(C) - (A.y-B.y) * sin(C)
y'' = y' * cos(C) + x' * sin(C) = (A.y-B.y) * cos(C) + (A.x-B.x) * sin(C)
第三步也是最后一步,将坐标系向后移动
x''' = x'' + B.x = (A.x-B.x) * cos(C) - (A.y-B.y) * sin(C) + B.x
y''' = y'' + B.y = (A.y-B.y) * cos(C) + (A.x-B.x) * sin(C) + B.y
然后转眼!我们有我们的旋转公式。我会在没有所有这些计算的情况下给你:
将点 A 绕点 B 旋转角度 C
A.x' = (A.x-B.x) * cos(C) - (A.y-B.y) * sin(C) + B.x
A.y' = (A.y-B.y) * cos(C) + (A.x-B.x) * sin(C) + B.y
【问题讨论】:
【参考方案1】:A 和 B 只是包含两个浮点数的 C++ 结构,要在 PHP 中实现这一点,您需要创建一个简单的“Point”类:
class Point
public $X;
public $Y;
public function __construct($x = 0, $y = 0)
$this->X = $x;
$this->Y = $y;
一旦你有了这个类,你就可以像这样创建点 A 和 B:
$A = new Point(0, 1);
$B = new Point(1, 0);
有了这两个点,还有一个以弧度为单位的旋转角度$C:
$C = 3.14;
// The long way
$x1 = $A->X - $B->X;
$y1 = $A->Y - $B->Y;
$sinC = sin($C);
$cosC = cos($C);
$x2 = $x1 * $cosC - $y1 * $sinC;
$y2 = $y1 * $cosC + $x1 * $sinC;
$resultX = $x2 + $B->X;
$resultY = $y2 + $B->Y;
// The quick way
$sinC = sin($C);
$cosC = cos($C);
$diff = new Point($A->X - $B->X, $A->Y - $B->Y);
$result = new Point($diff->X * $cosC - $diff->Y * $sinC + $B->X,
$diff->Y * $cosC + $diff->X * $sinC + $B->Y);
希望这会有所帮助!
【讨论】:
以上是关于C++ 到 PHP 翻译的主要内容,如果未能解决你的问题,请参考以下文章