我正在开发一个应用程序,我需要能够绘制平面图,但我需要绘制的线条或多或少地充当对象。例如,我需要能够单击一条线,或者如果它与一个房间相关联,则可以突出显示房间中的所有线。
我不一定需要对示例进行编码,但也需要一些常识或想法。
先感谢您!
创建 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)