因为需要的论文,最近开始学习OpenGL。由于刚入门的初学者有这么总会遇到很多问题,。

这些天,好不容易才OpenGL个问题弄明确了。

几点迷惑:

  1. 在网上百度。发现非常多求平面法向量的介绍以及程序。后面才知道顶点法向量才是我要的。
  2. 对于空间中的三个点。怎么确定平面法向量的方法?这里能够通过尝试顺时针和逆时针结合结果图来推断。以下简介下如何进行如果。

怎样通过如果方法推断平面法向量的方向(这里是指三角面片):

首先,当然要有数据,就是原始数据中每一个面片是由那三个顶点组成。比方如今空间中有一个三角形平面由三个顶点A,B,C组成。

接着。就会存在以下两种情况,例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmlzaGVyd2Fu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">

因此,我们在程序中仅仅要反着试一次,就会得到我们的结果了。

以下我给出我的部分代码已经效果图(斯坦福大学著名的bunny模型):

当中,A和B是后面要进行叉乘的两个向量,point1,point2,point3就是三角面片的三个顶点。

情况1:

		A[X] = point2[X] - point1[X];
A[Y] = point2[Y] - point1[Y];
A[Z] = point2[Z] - point1[Z];
B[X] = point1[X] - point3[X];
B[Y] = point1[Y] - point3[Y];
B[Z] = point1[Z] - point3[Z];

情况2:

		<span style="color:#000000;">A[X] = point3[X] - point1[X];
A[Y] = point3[Y] - point1[Y];
A[Z] = point3[Z] - point1[Z];
B[X] = point1[X] - point2[X];
B[Y] = point1[Y] - point2[Y];
B[Z] = point1[Z] - point2[Z];</span>

从上面两种情况能够看出。它们确实是相反的。

自己再实际操作的时候能够去尝试一下。

计算顶点法向量的过程记录:

首先,我们要了解几个概念,平面法向量(平面上两个不平行。不共线的向量叉乘得到),顶点法向量(以这个点为顶点的全部三角形的法向量之和)。

接着,我们就能够通过三个顶点求得两个向量,两个向量叉乘得到平面法向量。(平面法向量进行归一化)

然后,统计每一个顶点的全部平面法向量之和。(顶点法向量进行归一化)

bunny数据文件下载链接

bunny数据包括顶点数据和顶点法向量数据链接

第一连接是bunny一些数据模型格档,第二个环节是一个包括bunny顶点数据模型和已计算出的顶点法向矢量数据。

计算,我们可以自己用顶点数据顶点的法线,在顶点的法线进行比较,然后,和文件,写你自己的计算,验证顶点正常的程序是正确与否。

最新文章

  1. SVG动画
  2. HADOOP安装指南-Ubuntu15.10和hadoop2.7.2
  3. 二:基础概述netty
  4. Asp.net_完美设置页面最小宽度(兼容ie)
  5. java Map迭代
  6. c语言的一些库
  7. reCAPTCHA 简单分析
  8. Codeforces GYM 100114 B. Island 水题
  9. python里的Join函数
  10. placeholder 兼容 IE
  11. [google面试CTCI] 1-4.判断两个字符串是否由相同字符组成
  12. Python3基础 pop() 删除 键为指定值的项
  13. 201521123050 《Java程序设计》第8周学习总结
  14. js 点击复制代码 window.clipboardData.setData
  15. python 模块——os 模块
  16. 用RIPv2实现网络区域的互通
  17. jmeter之beanshell取出需要参数,传递给下个请求
  18. 【Linux】MySQL安装及允许远程访问
  19. 第10月第5天 v8
  20. CSUOJ 1007 矩形着色

热门文章

  1. 获取listboxitem在ListBox中的index并转换成abcd
  2. 【iOS开发-60】案例学习:多组数据的tableView设置、添加右側组索引、多层数据模型设置以及valueForKeyPath
  3. MIPS台OpenWrt在系统内的路由器Rust应用程序开发
  4. iOS开展——全球应对MotionEvent
  5. UVA 11248 - Frequency Hopping(网络流量)
  6. 02、Unicode 汉子转码小工具
  7. 使用WPF创建无边框窗体
  8. C++编程有趣的标题1 于1~9填写的运算结果的中间符号等于100
  9. newinstance()和new有什么区别?(转)
  10. 求Sn=a+aa+aaa+…+aa…aaa(有n个a)…