java取得线段与矩形的交点
发布网友
发布时间:2022-04-29 13:58
我来回答
共1个回答
热心网友
时间:2022-04-19 01:36
解法一:
可以把矩形看成是4条直线相交段构成的,把这4条直线的方程写出来,在把直线AB的方程也写出来。把直线AB的方程和分别和这4条边的直线的某一条组成方程组求解:
1、若都无解,肯定不相交。
2、有1个或2个解,可能相交。看求得的横坐标和纵坐标是否同时在线段DE(或EF或FG或GD)和线段AB的范围内。
3、计算过程中x、y的系数完全抵消,这是重合情况。
解法二:AB和矩形DEFG相交,有两种情况:
(1)有一个点在矩形内部,另一个点在矩形外部,这时候只有一个交点。
(2)两个点都在矩形外部,这时候有两个交点。
(1)和(2)不同时满足。
对于(1)通过判断A、B相对于矩形4条边的位置就可以确定。
对于(2)先计算出AB、DE、EF、FG、GD这5条直线的斜率,然后可以根据斜率判断是否相交,若斜率相同可能是重合或平行要排除。若只与其中一条相交,归结为情况(1),排除。然后,求出相交点,看求得的横坐标和纵坐标是否同时在线段DE(或EF或FG或GD)和线段AB的范围内。
java取得线段与矩形的交点
(1)有一个点在矩形内部,另一个点在矩形外部,这时候只有一个交点。(2)两个点都在矩形外部,这时候有两个交点。(1)和(2)不同时满足。对于(1)通过判断A、B相对于矩形4条边的位置就可以确定。对于(2)先计算出AB、DE、EF、FG、GD这5条直线的斜率,然后可以根据斜率判断是否相交,若斜...
如果矩形是不平行与地面的,那要怎么做矩形和矩形间的碰撞检测?
你说的是两个不平行的矩形间的碰撞检测吧。可以依次判断矩形A的四边是否与矩形B相交。判断两个线段是否相交的标准算法是 快速排斥试验+跨立实验,算法原理可以搜索关键字“计算几何算法概览”或参见下面的链接。C++忘差不多了,给你段java代码吧。数据结构:int RecAx[] = {...};int RecAy[] = {...
graphics类 java 怎么用
g.drawLine(3,3,50,50);//画一条线段 g.drawLine(100,100,100,100);//画一个点。2. 画矩形 有两种矩形:普通型和圆角型。(1) 画普通矩形有两个方法:drawRect(int x,int y,int width,int height):画线框围起来的矩形。其中参数x和y指定左上角的位置,参数width和height是矩形的宽和...
谁知道用java编写计算平面内两条线段的最短距离,求解啊,急急急急急急...
线段一的2端坐标是(10,10)(20,25)线段二的2端坐标是(39,40)(60,60)现判断是否相交。相交的话最短距离是0。不是相交的话。计算2个线段的端点距离。端点距离可能有一下四种组合:线段一(10,10)和线段二的(39,40)的距离 线段一(10,10)和线段二的(60,60)的距离 线段一(20,25)和线段二的...
谈谈"求线段交点"的几种算法
distA 和 distB 在distC 异侧时 两条线段是否相交需要再判断点c点d与线段ab的关系 前面的那些步骤 只是实现了 判断线段是否相交 当结果为true时 我们还需要进一步求交点 求交点的过程后面再说 先看一下该算法的完整实现 JavaScript Code复制内容到剪贴板function segmentsIntr(a b c d){ //线段ab...
java的 fillOval方法 和 drawLine 方法他们的坐标是怎么计算的?
答案:fillOval(30,0,20,30);drawLine(40,15,50,0);注释:1)fillOval public abstract void fillOval(int x,int y,int width,int height)使用当前颜色填充外接指定矩形框的椭圆。参数:x - 要填充椭圆的左上角的 x 坐标。y - 要填充椭圆的左上角的 y 坐标。width - 要填充椭圆的宽度。he...
Java知多少Graphics2D类的绘图方法
cap是端点样:CAP_BUTT(无修饰),CAP_ROUND(半圆形末端),CAP_SQUARE(方形末端,默认值)。Join定义两线段交汇处的连接方式:JOIN_BEVEL(无修饰),JOIN_MTTER(尖形末端,默认值),JOIN_ROUND(圆形末端)。2. paint属性 paint属性控制填充效果。先调用以下方法确定填充效果,理用setPaint()方法设置。Gradi...
java怎么判断线段与圆相交
先求线段到圆心的距离,来跟半径比较,如果大于半径,则不相交,else,判断线段是否包含垂心,若包含,则相交,否则,不相交。。。这是思路问题,java代码很好实现的。
java绘制一条100的水平直线,编写对应HTML程序向APPLET传递绘制线段...
class AppletTest extends Applet { / / private static final long serialVersionUID = 1L;private int x;private int y;public void init() { x = Integer.parseInt(getParameter("startX"));y = Integer.parseInt(getParameter("startX"));} public void paint(Graphics g) { g.drawLine(x,...
用Java直画线出现线条重复的问题
2. 你是画直线,但你用的是drawRect(画矩形命令)3. 另外,请不要在paint()以外的地方绘图,遵守守MVC, paint专业绘图, mouseDragged,mouseReleased,mousePressed 都只改变程序状态,不要参与绘图.你可以这样写:1。定义线段数据结构 描述一条线的构成;public class Line{ int x1,y1,x2,y2;publi...