找回密码
 点一下
查看: 4316|回复: 28

求助一个较困难的技能

  [复制链接]
发表于 2008-7-5 23:16:26 | 显示全部楼层 |阅读模式
技能的内容如下(各个单位、数据等都是打个比方):

    一个法师开始施放该技能
    检查以自己为圆心半径为800的圆形区域内是否有同类的我方法师2个或2个以上 若有则技能继续施放
    检查这几个法师的所在点构成的多边形区域(这个比较困难的话可改成大致的圆形区域)内是否有敌方单位 若有则对其施放魔法
    细节:施放魔法时各法师做出相同的施放魔法的动作
                如果可能的话,每相邻的两个法师之间还可以用魔法效果连接起来(这个如果比较困难的话,我想过,可以用兽族的医疗波来做,只要把治疗效果去掉,速度再加快点就能做出类似的效果)

这其实就是一个多人合作的魔法
本人能力有限 希望高手能把演示文件w3x发上来 那一定感激不尽~

效果大致如下图

发表于 2008-7-5 23:42:26 | 显示全部楼层
好长的细节……

不过思路的话LZ都已经有了嘛…………
回复

使用道具 举报

发表于 2008-7-6 00:14:14 | 显示全部楼层
呃~~~
头疼...
判断点是否在指定区域内的算法好像很复杂..
更何况 是不确定的几点...

去问thody吧,,
他可能有办法...
回复

使用道具 举报

发表于 2008-7-6 00:17:19 | 显示全部楼层
这个东西好难的………………
尤其是ls说的确定点在区域内,要弄出这么个区域很复杂的
回复

使用道具 举报

发表于 2008-7-6 01:44:04 | 显示全部楼层
如果不能判断是否在指定区域内那就只有判断单位数量了……

但是为什么会做出可能会不在区域内的说法呢…………貌似法师还要弄成会移动的?……
回复

使用道具 举报

发表于 2008-7-6 02:47:34 | 显示全部楼层
点构成的多边形可能是凹多边形,也可能是凸多边形
如果是凸多边形就很简单了
如果是凹多边形,由于只知道点的坐标,很难确定这个凹多边形的形状,也就很难确定点是不是在多边形内
回复

使用道具 举报

发表于 2008-7-6 04:59:25 | 显示全部楼层
有3个问题  1 两个法师不构成多边形   2 只有施法特效的话 这只能算个动画演示   3  你自己做过没有 没有? 拖出去打死

本身判断点与多边形的平面关系就是一个专业的数学课题 判断方式分凸多边形 和凹多边形 最简单的射线方式在T里要实现却比较复杂 于是我采用自己推导的方法来代替
首先是凸多边形  以被施法单位为原点建立坐标系 如点在多边形外 则 点与所有边的角度a    a不属于0-90 或 a不属于90-180 或 a不属于180-270 或 a不属于270-360   即 以每一个被选取点的坐标系有一象限没有角分布  再因为角的平移性质 可以直接理解为 当点在多边形外时 地图坐标西某一象限内没有|被施法点-多边形边|的向量存在    选取被施法点时应以所有端点最大距离为半径 以最大距离任意端点为圆心的区域内
然后凹多边形  建议在设置技能时取消凹多边形 以其能构成的最大凸多边形为范围  说实话就是我对点与凹多边形的判断无能为力

接下来技能相关
点的串联    基本思路是 以启动点为初始  以距离最近 且未被连接点为选取点的连接对象  当不存在未被连接点时连接初始点
排除点    当可能构成凹多边形的点时则排除  排除方法....需要所有点连接完毕过后再进行判断  以与被判断点相邻两点方向+90度为方向 延长 三点构成三角形面积 除以 相邻两点距离的值的长度 取一个判断辅助点(即 连接相邻两点 从被判断点向其做垂线 然后延长相同长度到对称点  以知三角形三边长即可用公式S=根号下[p(p-a)(p-b)(p-c)]  → p=(a+b+c)/2 求面积)  再分别将被判断点和辅助点 与多边形上任意端点连接  判断距离  被判断点距离小于辅助点距离 则说明会构成凹多边形 于是排除
关于技能的使用    通常意义上的法阵和组合技会使用规则的几何图形  以增强美感   不排除需要不规则几何图形的情况  但是我目前还没想到比较合适的技能效果和适合特效.....大概是多边形费精神太多了||||需要休息啊....于是LX各位继续努力吧

思路出来了  谁做去!!!!
感觉这贴已经不适合再呆这里了
回复

使用道具 举报

发表于 2008-7-6 05:08:31 | 显示全部楼层


LS大好人!你是个好人!所以……去做吧~~~~

我支持你喔~~~
回复

使用道具 举报

发表于 2008-7-6 06:05:27 | 显示全部楼层
果然是个困难的技能
观望中
回复

使用道具 举报

发表于 2008-7-6 08:58:26 | 显示全部楼层
引用第2楼幽阳于2008-07-06 00:14发表的  :
呃~~~
头疼...
判断点是否在指定区域内的算法好像很复杂..
更何况 是不确定的几点...

.......


555,为什么问我,不过有判断点是否在区域的函数口牙。

触发中也有这一条啊。

  1. native IsPointInRegion              takes region whichRegion, real x, real y returns boolean
复制代码
回复

使用道具 举报

发表于 2008-7-6 09:04:16 | 显示全部楼层
他的是不确定多边形内的点...这个技能不实际.....

MS应该先去找下学数学的...
回复

使用道具 举报

发表于 2008-7-6 09:05:15 | 显示全部楼层
再仔细看了下,这个技能的确变态,我是说计算方面。


不过取大法师形成的矩形,可以从当中x坐标最大的开始取,然后寻找与该坐标相连直线斜率最大的法师,然后如此循环,最后当取到了最开始的大法师,就算取完了。


补充一点,如果循环完之后没有选到所有的大法师,那么该多边形就是凹多边形;如果选完了,就是凸多边形。


至于区域的计算,又素一个工程。
回复

使用道具 举报

发表于 2008-7-6 09:09:31 | 显示全部楼层
然后继续从x坐标最大取区域,不过要同时从两边开始取,两条直线中间的范围细化成一条条矩形加入区域,直到取到了x坐标最小点。
回复

使用道具 举报

发表于 2008-7-6 09:58:21 | 显示全部楼层
突然想到,可以用夹角公式,将各顶点与某点连接起来,n边形能得到n个夹角
如果在区域内,各个角的和使360度,在边界或角上,是180度,在区域外是00到360内的值

不过不知道误差应该怎么取比较好………………
回复

使用道具 举报

 楼主| 发表于 2008-7-6 10:16:34 | 显示全部楼层
这技能果然很复杂  唉~~
我怀疑没有一定意志力的人做到一半就作不下去了。。。
看了大家的回复 好像都比较困难  做不出来也没关系 谢谢大家  伤脑筋了。。。。。

大家都谈到了凹凸多边形 这个当时忘了考虑了   其实如果有凹多边形的话 那一定存在凸多边形 可以这样考虑
回复

使用道具 举报

 楼主| 发表于 2008-7-6 10:21:30 | 显示全部楼层
引用第13楼zhuzeitou于2008-07-06 09:58发表的  :
突然想到,可以用夹角公式,将各顶点与某点连接起来,n边形能得到n个夹角
如果在区域内,各个角的和使360度,在边界或角上,是180度,在区域外是00到360内的值

不过不知道误差应该怎么取比较好………………

这个想法很不错 不过不是很实际、、
回复

使用道具 举报

发表于 2008-7-6 10:22:50 | 显示全部楼层
这可不一定呀,凹多边形存在而凸多边形不存在很正常的

关键问题不在凹凸,而在怎么把这个多边形区域弄出来,或者说怎么判断点在这个多边形内

刚才那个我也的确没考虑到凹多边形的情况呢………………
回复

使用道具 举报

发表于 2008-7-6 10:29:29 | 显示全部楼层
由点确定的凹多边形形状是不确定的额。

所以考虑的时候,只需要考虑将所有点包含在内的最小凸多边形就可以了。

11楼是计算多变型的,12楼是计算区域的。

我不认为谁会有这个精力去计算。
回复

使用道具 举报

发表于 2008-7-6 10:32:46 | 显示全部楼层
恩,还是判断最小凸多边形的比较好

但是怎么确定这个最小凸多边形呢?

也不用确定了,如果某点在凹多边形外在最小凸多边形内的话,夹角和仍然是360………………
回复

使用道具 举报

 楼主| 发表于 2008-7-6 10:48:45 | 显示全部楼层
算了 暂时放弃了  等以后上了大学学了高等数学和高等编程再弄好了
谢谢大家了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-4 12:39 , Processed in 0.109608 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表