【纯技术交流~GDI+画布多次旋转平移后坐标换算问题】

清晨曦月 元老
博客专家认证
2008-10-18 09:27:57
给定问题:
一个控件C:大小100×100
一个画布G:大小200×200
G使用C的句柄创建,切与C中心对齐。

经以下操作

0、取随机点(X1,Y1),(X2,Y2)
1、将G平移(x1,y1)
2、将G绕画布坐标系下点(x2,y2)旋转30度
重复0,1,2有限次之后
已知,C上一点P(60,50),求G上在“视觉上”与之重合的点的坐标?

请不要叨叨能否看见这个点,谢谢!


简言之,问题如下:

在一个平面上,取坐标系C0,经一系列平移,旋转操作依次得到C1,C2,C3……CN,此时,已知坐标系C0内一点(X,Y),求在CN坐标系下,平面上该点的坐标(XN,YN)?


...全文
134 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
水如烟 2008-11-02
  • 打赏
  • 举报
回复
平面坐标的平移旋转,用复数方便.
http://topic.csdn.net/u/20071017/21/b6d265df-8699-483f-93d0-50d02c69ba41.html
清晨曦月 元老 2008-11-02
  • 打赏
  • 举报
回复
~~~~~~~~~~~~~~~~~过两天结贴了。还是这样没答案。。挂了无数!
清晨曦月 元老 2008-10-23
  • 打赏
  • 举报
回复
知道FLASH的编辑界面么?呵呵。。。我做的类似于那个的东西,,,,这个问题虽然解决了,但是有点模糊,所以拿出来讨论一下。。。
huyuelong2000 2008-10-23
  • 打赏
  • 举报
回复
Dim graphics As Graphics = Me.Panel1.CreateGraphics
'创建路径区域
Dim gp As System.Drawing.Drawing2D.GraphicsPath
gp = ghPath
'获取路径的点信息
Dim bound As RectangleF = gp.GetBounds()
Dim dataPoints As PointF() = gp.PathPoints
Dim v As String '获取翻转或旋转类型值
v = PicBoxMatrixText
Dim PicBoxMatrix As String
If v = "MatriY0" Then '复位后模拟运行的情况
PicBoxMatrix = v
Dim i As Integer
'依次对路径的定义点的Y值进行正反交换
For i = 0 To gp.PathData.Points.Length - 1 'gp.PointCount - 1
'根据该点距路径起点的距离占整个路径长度的比例更改X或Y值
Dim pTypes As System.Drawing.Drawing2D.PathPointType = gp.PathTypes(i)
dataPoints(i).Y = dataPoints(i).Y
dataPoints(i).X = dataPoints(i).X
Dim mPoint1 As System.Drawing.PointF = New PointF(dataPoints(i).X + 15, dataPoints(i).Y)
Dim mPoint2 As System.Drawing.PointF = New PointF(dataPoints(i).X - 15, dataPoints(i).Y)
Dim mPoint3 As System.Drawing.PointF = New PointF(dataPoints(i).X, dataPoints(i).Y + 15)
Dim mPoint4 As System.Drawing.PointF = New PointF(dataPoints(i).X, dataPoints(i).Y - 15)
graphics.DrawLine(Pens.Red, mPoint1, mPoint2)
graphics.DrawLine(Pens.Red, mPoint3, mPoint4)
Thread.CurrentThread.Sleep(100)
bmp = New Bitmap(Me.Width, Me.Height)
picDXF.Image = bmp
Dim path As String
path = path1
ImportDXF(path, MyDXF)
DrawDXF(PicBoxMatrix, Angle, Me.picDXF, MyDXF)
Dim fileName As String
fileName = fileName1
Dim filePuth As String
filePuth = Application.StartupPath + "\" + "" & fileName & "" + ".bmp"
bmp.Save(filePuth)
MyImage = bmp
Viewer.Image = MyImage
Next

dataPoints(i).Y = dataPoints(i).Y '旋转后的坐标由这个决定
dataPoints(i).X = dataPoints(i).X
不知道你是不是这种须求
yanlongwuhui 2008-10-22
  • 打赏
  • 举报
回复
MARK
迈克揉索芙特 2008-10-22
  • 打赏
  • 举报
回复
原来这还有一帖 帮楼主up
wuyi8808 2008-10-21
  • 打赏
  • 举报
回复
路过,up。
水如烟 2008-10-21
  • 打赏
  • 举报
回复
我做过一个复数类,对平面坐标变换处理出来蛮方便的.
清晨曦月 元老 2008-10-21
  • 打赏
  • 举报
回复
.........
cauhorse 2008-10-18
  • 打赏
  • 举报
回复
先标记下再说.
清晨曦月 元老 2008-10-18
  • 打赏
  • 举报
回复
哦,对了~!~虽然是贫农,不过千八百分的还是有的!呵呵~~~

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧