首页
社区
课程
招聘
[求助]如何确定圆心坐标
发表于: 2006-9-15 19:22 6478

[求助]如何确定圆心坐标

2006-9-15 19:22
6478

如何确定圆心坐标  其中EAX=宽度 ,ECX=高度,(dwCenterX,dwCenterY)圆心坐标。其中注释部分是我自己的想法和疑问
.if    ecx > eax
    mov    edx,eax        ;把宽度放入EDX
    sub    ecx,eax              ;ECX中放高和宽的差值
    shr    ecx,1               ;这句就不明白了,把差值逻辑右移1位,有什么意义呢?
    mov    dwCenterX,0         ;因为宽度小,所以使圆心坐标X=O
    mov    dwCenterY,ecx       ;这个ECX怎么就成了,坐标Y了呢??
.else                         ――――――――――――――――――――――――――
    mov    edx,ecx
    sub    eax,ecx
    shr    eax,1          这里的疑问和上面的相同
    mov    dwCenterX,eax
    mov    dwCenterY,0
.endif                           ――――――――――――――――――――――――
    shr    edx,1          这里指的应该是 长宽相等的情况吧,那怎么有是逻辑右移1位
    mov    dwRadius,edx   就成了圆心坐标了呢??还有这个EDX的值,什么时候有的啊?
    add    dwCenterX,edx
    add    dwCenterY,edx
    ret                   ――――――――――――――――――――――――

又要麻烦了,因为实在想不同,所以不得以又厚着脸皮来请教了

PS:求的是矩形的内切圆的圆心坐标


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (9)
雪    币: 247
活跃值: (135)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
右移一位就是除以2吧
那高宽差值的一半,怎么就成了半径呢?
2006-9-15 19:24
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
最初由 phoenix[ne] 发布
右移一位就是除以2吧
那高宽差值的一半,怎么就成了半径呢?

那个不是半径,只是计算出圆左右两边的间距。
2006-9-16 10:54
0
雪    币: 235
活跃值: (41)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
sub    ecx,eax              ;ECX中放高和宽的差值
    shr    ecx,1               ;这句就不明白了,把差值逻辑右移1位,有什么意义呢?

我的理解,不一定对,抛砖引玉^_^(我假设的是第一个if成立)
应该是指下面一个矩形(把原来矩形中划出一块正方形来):
------------------ //矩形top  从这到下面虚线是差值一半
|--------|
|                |
|                |
|--------| //从这到bottom是差值另一半
------------------ //矩形bottom
我想,这就是差值一半的意思吧!
菜鸟一个,说错了大家请指正
2006-9-16 21:28
0
雪    币: 247
活跃值: (135)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
楼上的说明的那2句我明白了。
那最后一句(第一个IF)
mov    dwCenterY,ecx  ;ECX中是高度
不明白

怎么会把圆心坐标赋值为(0,ECX)的 ??
2006-9-17 10:17
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
6
最初由 phoenix[ne] 发布
楼上的说明的那2句我明白了。
那最后一句(第一个IF)
mov dwCenterY,ecx ;ECX中是高度
不明白

........

前面我说过,ecx是矩形到圆形的间距,程序在取得矩形到圆形的间距再加上圆形的半径,才是矩形的中心点,以矩形的中心点,作为圆心坐标。
给你一个图理解一下:
2006-9-17 10:41
0
雪    币: 247
活跃值: (135)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
ecx是矩形到圆形的间距 我理解
但EDX中应该放的是直径才对啊。(mov    edx,eax)
以你的图来说,上下的高EAX 恰恰是内切圆的直径
而语句中的mov    edx,eax 是把直径放入了EDX。
sub    ecx,eax      
shr    ecx,1
是算出了  矩形到圆形的间距 ECX

矩形的中心点=圆形的间距+上圆形的半径   那应该是ECX+EDX/2 才对啊?

不过,我已经明白怎么写了。
多谢       
小虾斑竹。
2006-9-17 14:25
0
雪    币: 254
活跃值: (126)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
8
.endif后面那几行是在条件语句外面的,不管哪种情况,都会执行到
2006-9-17 15:09
0
雪    币: 247
活跃值: (135)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
heXer真牛啊。
你怎么知道我没看明白那啊。。
完全明白了。
多谢各位了。
2006-9-17 18:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习了

2006-9-20 11:20
0
游客
登录 | 注册 方可回帖
返回
//