3D点的平⾯投影公式及程序
物体点P相对于V在Screen上的投影,因为是作为上计算机使⽤的,所以采⽤了计算机上的坐标系来推算(理论上在其他直⾓坐标系也通⽤)
其中计算公式:
经过验算没有错误,其中得到的值P'的点是⼀个相对的值,可以通过变换坐标系原点到屏幕中⼼来实现.
详细见程序
程序实例中的⽰例图形是如下的⼀个空间中的长⽅形.
如下是程序Test中录制的动态截图(从SkyDrive上传的,外链不知会保持多久.源地址:):
唯⼀⼀点可能就是这个是⽤VS2010写的,有些代码可能不兼容,不过⼤体上没有关系,我说利⽤到的不过只是快捷设置属性这⼀点,以
及.NetFramework 4 版本的System.Drawing名称空间
2012年四川高考分数线总体来说感觉不是很理想,没有达到最期待的效果,如下给出下载地址(包括主类和Test窗体),欢迎给予
marry me什么意思中文改进,最好在改进后再回复我⼀下,可以让我也学习学习.⾮常期待.谢谢
下载: 91KB 02010/5/15 16:06:16
下⾯是全部代码(Projection3D.vb ClassLibrary)
关键是在于3D点道平⾯点的换算
1Imports System.Drawing
2Namespace Projection3D
3Public Class Point3D
wipe
4Property X As Long
5Property Y As Long
6Property Z As Long
7Sub New(ByVal X As Long, ByVal Y As Long, ByVal Z As Long)
8MyClass.X = X
9MyClass.Y = Y
10MyClass.Z = Z
11End Sub
12End Class
13Public Class Projection3D
14Property ViewPoint As Point3D
15Property ObjPoint As Point3D
16Private Projection As Point
activitygroup>大专生考研唐顿庄园第三季剧情17ReadOnly Property ProjectionPoint As Point
18Get
violets
19Return ProjectionPoint
smu20End Get
21End Property
22Sub New(ByVal Vp As Point3D, ByVal Op As Point3D)
23 ViewPoint = Vp
24 ObjPoint = Op
25 GetProjection()
26End Sub
27Public Function GetProjection() As Point
全美大学综合排名
28If UnError() = 0Then
29 Projection.X = (ViewPoint.Z * ObjPoint.X - ViewPoint.Z * ViewPoint.X) / (ViewPoint.Z - ObjPoint.Z)
30 Projection.Y = (ViewPoint.Z * ObjPoint.Y - ViewPoint.Z * ViewPoint.Y) / (ViewPoint.Z - ObjPoint.Z) 31Return Projection
32El
33Return New Point(0, 0)
34End If
35
不到长城非好汉英语
36End Function
37Public Function UnError() As Integer
38If ViewPoint.Z - ObjPoint.Z = 0Then
39Return1
40El
41Return0
42End If
43End Function
44End Class
45End Namespace
46