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 翻译的主要内容,如果未能解决你的问题,请参考以下文章

c 到 c++,在翻译中丢失

SDK 指针的问题 - c++ 到 Delphi 的翻译

使用 C# 从 RLM 读取许可证文件(C++ 到 C# 的翻译)

jquery 到 php 的翻译器?

类似于 Rosetta 的 PHP 翻译前端?

如何使用 C++ 中的 QtLinguist 将程序翻译成语言?