《易传·系辞上传》:”易有太极,是生两仪,两仪生四象,四象生八卦。”

借用一下古代先人们的智慧引一下本文的主题-三维图形中的点线面,在三维几何中也有一句话可以和上面的话相对应:由点成线,由线成面,由面成体,由体成形。

点向量和方向向量

首先我们要明确在三维空间中表示点的点向量和表示方向的方向向量的区别,例如A(x,y,z)可以表示一个点向量,而OA(x,y,z)就表示一个方向向量。方向向量在平移过程中将保持不变。

3D空间中的直线

3维空间中有两个点P1和P2,那么通过这两个点的直线可以定义为:P(t) = (1-t)P1 + tP2,其中t可以是任意实数。P1和P2之间的线段对应于t在0到1之间的值。

射线是指只有一个端点并且在给定方向V上无限延伸的直线。射线的参数方程为:P(t) = P0+tV,其中t的值大于0。

可以看出,无论是直线还是射线,都可以由一个点加上指向而构成的。

两条直线的关系

在同一平面里的两条直线,它们的关系有两种,相交或者平行。当然重合也是包含在相交里面的。

但是在三维世界里,加入了空间的概念,所以两条直线的关系又增加了一种,那就是异面。

两条直线如下所示:

P(s) = P0+sVP

Q(t)=Q0+tVQ

其中s和t可以是任意实数。

3D空间中的平面

对于给定的3D点P0和法向量N,那么经过P0且与N垂直的平面可以定义为满足方程N.(P-P0)=0的点的集合。如下图所示:

平面方程可以表示为Ax+By+Cz+D=0 ,   其中A,B,C是法向量N的x,y,z的分量,D = -N . P0 。

平面与直线的关系

(1)直线在平面内 即直线和平面有无数个公共点。

(2)直线和平面相交 即直线和平面有且只有一个公共点(垂直也是一种相交)。

(3)直线和平面平行 即直线和平面没有公共点。

平面与平面的关系

在3维空间中平面和平面之间的关系就类似于2维空间中直线和直线的关系:

(1)两个平面相交(重合是一种特殊的相交)。

(2)两个平面平行。

3D游戏与计算机图形学中的数学方法-点线面的更多相关文章

  1. 3D游戏与计算机图形学中的数学方法-变换

    1变换 在3D游戏的整个开发过程中,通常需要以某种方式对一系列的向量进行变换.通常用到的变换包括平移,缩放和旋转. 1.1通用变换 通常可将n x n可逆矩阵M看成是一个从坐标系到另一个坐标系的变换矩 ...

  2. 3D游戏与计算机图形学中的数学方法-四元数

    说实话关于四元数这一节真的是不好懂,因为里面涉及到好多数学知识,单说推出来的公式就有很多.不怕大家笑话,对于四元数的学习我足足花了两天的时间,包括整理出这篇文章.在前面一章我写到了“变换”,这也是总结 ...

  3. 3D游戏与计算机图形学中的数学方法-视截体

    视截体用来表示一个空间的范围,位于这个空间范围内的三维场景的任何物体都可以被看到. 视截体由六个平面围成,其中的四个平面与场景的边界相对应,分别被称为左,右,底,顶视截面.另外两个平面称为近视截面和远 ...

  4. Mathematics for Computer Graphics数学在计算机图形学中的应用 [转]

    最近严重感觉到数学知识的不足! http://bbs.gameres.com/showthread.asp?threadid=10509 [译]Mathematics for Computer Gra ...

  5. 3D游戏开发之UE4中的集合:TSet容器

    好久没有更新了,最近一直在老家过年,网络不通的,今天才有时间更新一集. 一.TSet<T>是什么 UE4中,除了TArray动态数组外,还提供了各种各样的模板容器.这一节,我们就介绍集合容 ...

  6. 计算机图形学中使用Turbo C++画图步骤

    一.下载安装Turbo C++ 我安装的是Turbo C++ 3.2.2.0下载链接 二.画图 1.打开Turbo C++,点击右下角start turbo C++ 2.点击file ->new ...

  7. JS中的数学方法

    1 . Math.ceil()      向上取整 2.  Math.floor()     向下取整 3. Math.round()    四舍五入取整 4.  Math.random()   生成 ...

  8. Java中的数学方法

    直接用代码 public class TestNumber { public static void main(String[] args) { float f1 = 5.4f; float f2 = ...

  9. 计算机图形学学习方法和相关书籍,做游戏,GIS,虚拟现实,三维引擎的都能够看看.

    本书參照<<图形学扫盲>> 整理的,原文内容引子: http://www.cppblog.com/lai3d/archive/2008/12/30/70796.html 前言: ...

随机推荐

  1. copy 的实现原理与深浅拷贝

    转自:http://bbs.9ria.com/thread-210322-1-1.html 首先,从copy开始说,简而言之,copy的目的就是生成一个新的实例,然后把其成员都按原实例赋值.对于非指针 ...

  2. 特效effects

    Test中使用的特效如下 首先,使用ccg(x,y)建grid,一个Grid 属性就好像一个矩阵,是一个网络的线,组成一系列的方块和矩阵. 一个(16,12)大小的grid将会运行的非常快,但是并不会 ...

  3. 常用的正则表达式C#工具类

    Regex类实现了一些特殊功能数据检查,正则表达式的一些常用的功能,集成至该类中. public class RegexDao { private RegexDao() { } private sta ...

  4. angular学习笔记(九)-css类和样式3

    再来看一个选择li列表的例子: 点击li中的任意项,被点击的li高亮显示: <!DOCTYPE html> <html ng-app> <head> <tit ...

  5. SpringKafka生产端配置类ProducerConfig.java源码

    /** * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreeme ...

  6. GNU风格 ARM汇编语法2

    .GNU汇编程序中的标号symbol(或label) 标号只能由a-z,A-Z,-,".",_等(由点.字母.数字.下划线等组成,除局部标号外,不能以数字开头)字符组成. Symb ...

  7. 【转】VMware虚拟机中CentOS设置固定IP

    因为需要配置固定IP,在网上找了很久终于找到一个可行的例子,自己配置成功了. 1.首先获取你的GATEWAY 方便后面在cento系统配置里使用选取菜单栏:Edit->Virtual Netwo ...

  8. FreeRTOS 低功耗之停机模式

    以下转载自安富莱电子: http://forum.armfly.com/forum.php STM32F103 如何进入停机模式在 FreeRTOS 系统中,让 STM32 进入停机模式比较容易,调用 ...

  9. iOS--崩溃日志的格式化分析---格式化crash日志

    工作中难免或碰到crash,如果是开发环境,碰到简单的crash还能重现下,如果不能重现的话,我们只能去分crash文件了. 首先看下面的crash问题,说句实话一看这个我是拒绝的,这怎么找原因啊,头 ...

  10. Kafka_Zookeeper_环境搭建使用

    Kafka 安装和测试 1. 简介 kafka (官网地址:http://kafka.apache.org)是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率. i. 消息的发布(publish) ...