椭圆弧的边界

时间:2019-03-04 12:51:43

标签: automatic-ref-counting bounds ellipse

我需要找到2D变换的椭圆弧的确切范围。

输入数据为:

  1. a -椭圆半径x
  2. b -椭圆半径y
  3. 变换-具有0个转换(a,b,c,d,tx,ty)的2D变换
  4. startAngle-弧起始角
  5. endAngle-圆弧结束角

我已经使用本主题答案来找到变换椭圆的边界 https://math.stackexchange.com/questions/91132/how-to-get-the-limits-of-rotated-ellipse

工作正常。

我现在拥有的东西

const rx2 = radiusX * radiusX;
const ry2 = radiusY * radiusY;

let maxX = Math.sqrt(rx2 * transform.a * transform.a + ry2 * transform.c * transform.c);
let maxY = Math.sqrt(rx2 * transform.b * transform.b + ry2 * transform.d * transform.d);
let minX = -maxX;
let minY = -maxY;

下一步是找到点p1,p2,p3,p4(见图) 这样我就可以检查startAngle和endAngle内的哪些点。

required points

椭圆的等式为: simple equation

变换椭圆的等式应为: transformed equation

为了找到所需的点,必须求解x和y的最后一个方程式

1 个答案:

答案 0 :(得分:0)

我有这个。

因此,我所需要做的就是对点(minX,minY)应用反向变换; (maxX,minY); (maxX,maxY); (maxX,minY); 然后使用上述的简单椭圆和线方程找到四个交点,然后将其转换为全局坐标乘以进行转换。

这是一点的代码

SELECT id FROM table WHERE PAIR[letter,number] = ANY(ARRAY[PAIR[...],...])

Result