我正在开发一个应用程序,我需要能够绘制楼层平面图,但我需要绘制的线条或多或少作为对象。例如,我需要能够点击一条线,或者如果它与房间相关联,则突出显示房间中的所有线条。
我不需要编码样本,也需要一些指导或想法。
提前谢谢你!
答案 0 :(得分:0)
创建Line,Room等类。
会议室包含一系列行。
Line有draw()并包含(x为整数,y为整数)方法。
实施包含: 您可以找出给定起点和终点的线的方程。然后你可以使用公式distance = abs(a * x0 + b * y0 + c)/ sqrt(a * a +)来计算点(x0,y0)与该线的距离(ax + by + c = 0) b * b) 如果距离为4像素或更小,那么contains应该为真。
类似于直线,曲线有一个描述它们的等式。 例如,Beziers和B样条具有相应的方程。 使用这些方程式,您可以绘制它们并计算出鼠标距离它们的距离。
对于Bezier曲线,请参阅: http://blog.gludion.com/2009/08/distance-to-quadratic-bezier-curve.html
圆圈例如它是最简单的。
distance = abs(radius - sqrt((mouseX - centerX)^2 + (mouseY - centerY)^2)