魔兽地图编辑器吧 关注:64,965贴子:3,835,528

直线、扇形选取二合一代码

只看楼主收藏回复

globals
private real x0
private real y0
private real f0
private real w0
private real r0
endglobals
private function Sector takes nothing returns boolean
local unit u=GetFilterUnit()
local real x= GetUnitX(u)
local real y= GetUnitY(u)
local real f
local real d=r0*TanBJ(w0)
set u=null
set f=bjf(x0, y0, x, y)
if RAbsBJ(AngleBetweenAngles(f0,f))<=90 then
set f=bjf(x0+d*CosBJ(f+180), y0+d*SinBJ(f+180), x, y)
if AngleBetweenAngles(f0,f)<w0 then
return true
endif
endif
return false
endfunction
//扇形范围单位
function SectorArea takes real x,real y,real f,real r,real halfanger returns boolexpr
set x0=x
set y0=y
set f0=f
set w0=halfanger
set r0=r/2
set FilterBxp= Filter(function Sector)
return FilterBxp
endfunction
其中xy为起点,f为方向角度,halfanger=0时为直线>0为扇形,r为直线宽度 用于扇形时是扩展宽度


IP属地:安徽1楼2020-08-22 11:14回复
    不看不看


    IP属地:湖南来自Android客户端2楼2020-08-22 12:48
    收起回复
      这画的啥玩意儿


      来自Android客户端3楼2020-08-22 13:53
      收起回复
        会的根本不看,不会的看了也不懂


        IP属地:安徽4楼2020-08-22 21:12
        收起回复
          灵魂画师


          IP属地:四川来自Android客户端5楼2020-08-23 02:27
          收起回复
            ck厉害


            IP属地:江西来自Android客户端6楼2020-08-23 10:59
            回复
              不明觉厉


              IP属地:江苏来自Android客户端7楼2020-08-24 10:04
              回复
                补充一个自定义代码
                function AngleBetweenAngles takes real angle1, real angle2 returns real
                local real r = ModuloReal( angle1 - angle2, 360.0 )
                if r <= 180.0 then
                return r
                endif
                return 360.0 - r
                endfunction
                然后上面第二个判断夹角 也需要取绝对值


                IP属地:安徽8楼2020-08-24 10:12
                回复
                  CK说帮他顶贴,我来帮忙顶一顶


                  IP属地:广东9楼2020-08-24 10:39
                  回复
                    bjf也提供下大佬


                    IP属地:广东11楼2020-08-25 14:36
                    收起回复
                      function bjf takes real x, real y, real x2, real y2 returns real//(x, y)朝向(x1, y1)的角度
                      return(bj_RADTODEG * Atan2(y2 - y, x2 - x))
                      endfunction


                      IP属地:安徽12楼2020-08-25 16:31
                      回复
                        放弃了,返回的boolexpr不会用


                        IP属地:广东13楼2020-08-25 17:57
                        收起回复
                          支持 ,多谢分享


                          IP属地:黑龙江来自Android客户端15楼2020-08-28 09:17
                          回复


                            我也想和什么东西合♂为一体


                            IP属地:广东16楼2020-11-27 16:24
                            回复
                              ck还在薇吧战斗啊。


                              IP属地:广东来自Android客户端17楼2020-11-28 17:07
                              收起回复