|
马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
看了按键小小生的大唐无双坐标系转换问题详解做了实验结果屏幕x坐标和实测擦不多y坐标擦很多。看了一段关于这个按键代码不懂,求那个懂的 师傅给 我翻译成tc语言。
- 小小生给的比例尺有点误差,你可以自己算,最好再用逼近法循环两边,就可以达到绝对精确了。
- //两种方法,我用的是第二种,更准确点
- Function 求目标点(ydpm,yddt,mbdt)
- //把已知点坐标分解为X,Y
- dtzbs = split(yddt,",")
- yddt_x = dtzbs(0)
- yddt_y = dtzbs(1)
- pmzbs = split(ydpm,",")
- ydpm_x = pmzbs(0)
- ydpm_y = pmzbs(1)
- mdtzbs = split(mbdt,",")
- mbdt_x = mdtzbs(0)
- mbdt_y = mdtzbs(1)
- vs = 0
- If vs = 1 Then
- jldt_x = mbdt_x - yddt_x
- jldt_y = mbdt_y - yddt_y
- jlpm_x = jldt_x / blch_x
- y_cha = jlpm_x / 2
- x_cha = jlpm_x * sqr(3) / 2
- zzdt_x = ydpm_x + x_cha
- zzdt_y = ydpm_y + y_cha
- jlpm_y = jldt_y / blch_y
- y_cha = jlpm_y / 2
- x_cha = jlpm_y * sqr(3) / 2
- mbpm_x = zzdt_x + y_cha
- mbpm_y = zzdt_y - y_cha
- Else
- jldt_y = mbdt_y - yddt_y
- jldt_x = mbdt_x - yddt_x
- jlpm_x = (jldt_y + jldt_x ) / blch_x * 0.8660254037844
- jlpm_y = (jldt_y - jldt_x ) / blch_y * 0.5
- mbpm_x = ydpm_x + jlpm_x
- mbpm_y = ydpm_y - jlpm_y
- //MsgBox "x="&mbpm_x-ydpm_x&",y="&mbpm_y-ydpm_y
- End If
- 求目标点 = mbpm_x&","&mbpm_y
- End function
复制代码 变量什么的可以参照我写中文代码。[code][浮点型 y差2,x差2,目标实际x,目标实际y,目标地图x,坐标地图x,坐标实际y,实际y,比例尺2,比例尺1
整型 线程1,a,b,x1,y1,屏幕坐标x,屏幕坐标y
浮点型 比例尺,图上距离y,实际距离x,目标地图y,坐标地图y,图上距离x,y差,x差,中转坐标x,中转坐标y,坐标实际x,实际距离y
功能 逻辑型 循环1()
浮点型 y差2,x差2,目标实际x,目标实际y,目标地图x,坐标地图x,坐标实际y,实际y,比例尺2,比例尺1
整型 线程1,a,b,x1,y1,屏幕坐标x,屏幕坐标y
浮点型 比例尺,图上距离y,实际距离x,目标地图y,坐标地图y,图上距离x,y差,x差,中转坐标x,中转坐标y,坐标实际x,实际距离y
比例尺1=0.315
比例尺2=0.315
目标地图x=256
目标地图y=84
坐标地图x=188
坐标地图y=30
坐标实际x=529
坐标实际y=434
图上距离x=目标地图x-坐标地图x
图上距离y=目标地图y-坐标地图y
实际距离x=图上距离x/比例尺1
y差=实际距离x/2
x差=实际距离x*数学.开方(3.0)/2
中转坐标x=坐标实际x+x差
中转坐标y=图上距离y+y差
实际距离y=图上距离y/比例尺2
y差2=实际距离y/2
x差2=实际距离y*数学.开方(3.0)/2
目标实际x=中转坐标x+x差2
目标实际y=中转坐标y-y差2
实际y=目标实际y
屏幕坐标x=转换.浮点型转整型(目标实际x)
屏幕坐标y=转换.浮点型转整型(实际y)
/code] |
|