【问题标题】:Can somebody please help me with a geometric transformation problem?有人可以帮我解决几何变换问题吗?
【发布时间】:2011-09-23 15:11:41
【问题描述】:

我需要在两个给定点之间画一个圆弧。我也有弧的半径。我知道这可以使用标准的canvas API 来完成,但我也需要处理椭圆弧的情况。这段代码是一个通用的解决方案。现在唯一的问题是它不起作用!

此代码背后的数学概念位于https://math.stackexchange.com/questions/53093/how-to-find-the-center-of-an-ellipse

我的 JS 代码就是它的实现。我的 JS 代码可以在http://jsfiddle.net/BkEnz/2/ 找到。理想情况下,那里的两个圆圈都应该穿过两个粉红色的小点。

我希望有人能指出我正确的方向。过去几天我一直在努力解决这个问题!

【问题讨论】:

  • 问题出在哪里?是不是计算错了,还是不能根据计算结果画出圆弧?
  • @Vlad 我不确定,但我认为某些地方的计算出了问题。
  • 修复了!更正后的代码在jsfiddle.net/ZxRBT
  • 请将您的解决方案作为答案发布,然后接受您自己的答案以将此问题标记为已解决。

标签: javascript canvas geometry transformation geometric-arc


【解决方案1】:

修复了这个问题。更正后的工作代码位于http://jsfiddle.net/ZxRBT

注意这条线

var t = translate(-R1R2x, -R1R2y, IDENTITY_TRANSFORM());

在我之前版本的代码中,这一行是

var t = translate(-R1R2x, -R1R2y, sr);

所以当我计算C1C2的值时,使用下面的代码

C1 = compose(vut, [[R1x],[R1y],[1]]);
C2 = compose(vut, [[R2x],[R2y],[1]]);

我还在R1x,R1yR2x,R2y 上应用sr 组合,但这些点已经在sr 坐标中。

这是一个我忽略了很长时间的严重错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    相关资源
    最近更新 更多