| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 705 人关注过本帖
标题:长方形求解问题
只看楼主 加入收藏
hailong718
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-2-28
收藏
 问题点数:0 回复次数:7 
长方形求解问题

怎么定义一个任意的长纺形(可以不跟X,Y轴平行),比较合理的定义方法。怎么样判断两个长方形相不相交呢?

搜索更多相关主题的帖子: 长方形 求解 
2006-02-28 19:49
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 

我觉得呢可以用四个点
或者一个点加长宽定义
判定呢就列出一系列的可能情况用数学公式加以推倒

非要那种奇形怪状的嘛
还是经典的两个点好


http://kongfuziandlife. http://codeanddesign.
2006-02-28 22:08
hailong718
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-2-28
收藏
得分:0 

如果是跟X,Y轴平行的,可以用对角两点定义,但是它是任意的。用四点定义可能有点烦,还有其他合理的定义没有?

2006-03-02 13:28
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
收藏
得分:0 

我想可以这样定义:
class Point
{
......
};
class Rect
{
public:

Rect(){};

Rect(Point p1, Point p2, float angle);
}
/*///////////////////////////////////////////////////
取两个点p1(x1, y1), p2(x2, y2), 再取一个方向angle [0, 360)
/*///////////////////////////////////////////////////

Rect(Point p1, Point p2, float angle)
{
.......
}

[此贴子已经被作者于2006-3-2 14:16:56编辑过]


谷底深深行 ,峰顶漫漫步......@_@
2006-03-02 14:16
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
3个点呢?一条边的两个端点+长方形的中心点。

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-03-02 14:28
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
收藏
得分:0 
不管怎样都得2+1,先取两个点,第三个因素是中心点也好,是角度也罢,总之至少要三个因素才能构造边为任意方向的rectangle,所以rect(para1, para2, para3)三个参数是必然的,至于算法,无非是直线正交,两点之距离等等,总可以解决的吧。。。:)

谷底深深行 ,峰顶漫漫步......@_@
2006-03-02 17:15
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
收藏
得分:0 

但我还是觉得用角度好些,这样可以很直观的知道矩形的倾斜程度。。。


谷底深深行 ,峰顶漫漫步......@_@
2006-03-02 17:16
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
收藏
得分:0 
好像楼主在游戏中有两个矩形的NPC进行碰撞吧。。。
1\ 我想如果这俩矩形比较接近方形,则将其定义为圆(不管矩形与X、Y平等与否),然后用半径来判断是否发生碰撞。
2\ 如果你的NPC是杆状的,则可以依矩形的长边为圆的直径构造圆C0,然后再将矩形平分为n份,(n取值规则:直到平分后的小矩形接近方形为止),再分别对其构造圆C1,C2...Ci...Cn。碰撞时,先检测C0是否有碰撞,若有,则再检测C1,C2...Ci...Cn是否有碰撞。
总之,圆形的碰撞还是比较方便的,这样可以避免构造复杂的矩形及其碰撞检测。。。

谷底深深行 ,峰顶漫漫步......@_@
2006-03-02 17:50
快速回复:长方形求解问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040666 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved