-1

我正在开发一个应用程序,我需要能够绘制平面图,但我需要绘制的线条或多或少地充当对象。例如,我需要能够单击一条线,或者如果它与一个房间相关联,则可以突出显示房间中的所有线。

我不一定需要对示例进行编码,但也需要一些常识或想法。

先感谢您!

4

1 回答 1

0

创建 Line、Room 等类。

房间包含线路列表。

Line 具有 draw() 和 contains(x 作为整数,y 作为整数) 方法。

实现包含:您可以计算出给定起点和终点的直线方程。然后您可以使用公式 distance = abs(a*x0 + b*y0 + c) / sqrt(a * a + b*b) 如果距离为 4 像素或更小,则包含应该为真。

与直线相似,曲线有一个描述它们的方程。例如,贝塞尔曲线和 B 样条曲线具有相应的方程。使用这些方程,您可以绘制它们并计算出鼠标与它们的距离。

贝塞尔曲线见:http: //blog.gludion.com/2009/08/distance-to-quadratic-bezier-curve.html

以圆圈为例,它是最简单的。

distance = abs(radius - sqrt((mouseX - centerX)^2 + (mouseY - centerY)^2)

于 2013-06-17T13:19:17.943 回答