我需要找到2D变换的椭圆弧的确切范围。
输入数据为:
我已经使用本主题答案来找到变换椭圆的边界 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内的哪些点。
椭圆的等式为: simple equation
变换椭圆的等式应为: transformed equation
为了找到所需的点,必须求解x和y的最后一个方程式
答案 0 :(得分:0)
我有这个。
因此,我所需要做的就是对点(minX,minY)应用反向变换; (maxX,minY); (maxX,maxY); (maxX,minY); 然后使用上述的简单椭圆和线方程找到四个交点,然后将其转换为全局坐标乘以进行转换。
这是一点的代码
SELECT id FROM table WHERE PAIR[letter,number] = ANY(ARRAY[PAIR[...],...])