C语言做出3D效果的程序,3D数学库的简单实现(C语言)
头文件
vmath.h
#ifndef _VMATH_H
#define _VMATH_H
#ifdef _cplusplus
extern "C" {
#endif
typedef float Matrix44f[16];
void translate(Matrix44f M, float x, float y, float z);
void scale(Matrix44f M, float x, float y, float z);
void rotateX(Matrix44f M, float radian);
void rotateY(Matrix44f M, float radian);
void rotateZ(Matrix44f M, float radian);
void rotateXYZ(Matrix44f M, float radian, float x, float y, float z);
void perspectiveFrustum(Matrix44f M, float left, float right, float top, float bottom, float near, float far); //透视投影
void orthoPerspect(Matrix44f M, float left, float right, float top, float bottom, float near, float far); //正交投影
#ifdef _cplusplus
}
#endif
#endif
实现文件vmath.c
#include
#include
#include
#include "vmath.h"
/
//
void translate(Matrix44f M, float x, float y, float z)
{
int i;
for(i= 0; i <16; i++)
M[i] =0;
M[3] =x;
M[7] =y;
M[11] =z;
M[15] =1.0;
}
/
/
void scale(Matrix44f M, float x, float y, float z)
{
int i;
for(i= 0; i <16; i++)
M[i] =0;
M[0] =x;
M[5] =y;
M[10] =z;
M[15] =1.0;
}
///
void rotateX(Matrix44f M, float radian)
{
int i;
for(i= 0; i <16; i++)
M[i] =0;
M[0] =1.0;
M[5] =cos(radian);
M[6] =sin(radian);
M[9] =-sin(radian);
M[10] =cos(radian);
M[15] =1.0;
}
void rotateY(Matrix44f M, float radian)
{
int i;
for(i= 0; i <16; i++)
M[i] =0;
M[0] =cos(radian);
M[2] =-sin(radian);
M[5] =1.0;
M[8] =sin(radian);
M[10] =cos(radian);
M[15] =1.0;
}
/
/
void rotateZ(Matrix44f M, float radian)
{
int i;
for(i= 0; i <16; i++)
M[i] =0;
M[0] =cos(radian);
M[1] =-sin(radian);
M[4] =sin(radian);
M[5] =cos(radian);
M[10] =1.0;
M[15] =1.0;
}
/
//
void rotateXYZ(Matrix44f M, float radian, float x, float y, float z)
{
int i;
for(i= 0; i <16; i++)
M[i] =0;
}
void perspectiveFrustum(Matrix44f M, float left, float right, float top, float bottom, float near, float far)
{
int i;
for(i= 0; i <16; i++)
M[i] =0;
M[0] =2*near/(right -left);
M[2] =(right +left)/(right -left);
M[5] =2*near/(top -bottom);
M[6] =(top +bottom)/(top -bottom);
M[10] =(near +far)/(near -far);
M[11] =2*near*far/(near -far);
M[14] =-1.0;
}
void orthoPerspect(Matrix44f M, float left, float right, float top, float bottom, float near, float far)
{
int i;
for(i= 0; i <16; i++)
M[i] =0;
M[0] =2/(right -left);
M[3] =(left +right)/(left -right);
M[5] =2/(top -bottom);
M[7] =(bottom +top)/(bottom -top);
M[10] =2/(near -far);
M[11] =(near +far)/(far -near);
M[15] =1.0;
}
绕任意轴旋转的矩阵尚未写!
编译好的静态库可至我的资源下载,使用VC++2008.
C语言做出3D效果的程序,3D数学库的简单实现(C语言)相关推荐
- Unity 工具 之 VText 简单快速实现 文字 3D 效果,VText 的导入设置和简单使用(可支持中文字体)
Unity 工具 之 VText 简单快速实现 文字 3D 效果,VText 的导入设置和简单使用(可支持中文字体) 目录 Unity 工具 之 VText 简单快速实现 文字 3D 效果,VText ...
- 怎么用c语言做出等妖三角形_初二数学培优,怎么用顶点坐标求三角形面积?割补法这样用很简单...
点击右上角关注"陈老师初中数理化"分享学习经验,一起畅游快乐的学习生活. 根据顶点坐标求解三角形的面积是初二数学的重要知识点,本文就例题详细解析这类题型的解题思路,希望能给初二学生 ...
- c语言小游戏 精简_【原创】用非常简单的c语言自编的一个小游戏
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 修改过后: #include #include void js(int); int qian = 1000; int x = 0; int main() ...
- Android Camera 3D效果
版本:1.0 日期:2014.4.14 版权:© 2014 kince 转载注明出处 一.概念 在Android中要想实现3D效果,第一个想到的应该就是OpenGL ES,因为在很多基础教材中几乎都提 ...
- android 3d渲染动画效果吗,Android如何实现3D效果
前言 前段时间读到一篇文章,作者通过自定义View实现了一个高仿小米时钟,其中的3D效果很是吸引我,于是抽时间学习了一下,现在总结出来,和大家分享. 正文 想要在Android上实现3D效果,其实并没 ...
- css立体3d效果动画,css3 实现动画,变换基点及3D效果~
各位小伙伴 上次分享的爱心感觉如何呀~ 动画效果 首先,娜娜在这边给大家认个错,上次分享落下了一个东西,就是动画效果,没有动画是实现不了爱心一条一条的动作的. 虽然那个爱心源代码已经给大家了,只要复制 ...
- 3d服务器播放系统,3D立体电影放映系统
本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 3D立体电影放映系统采用普通偏光式双机3D技术,播放3D左右格式的片源.常见三种双机放映的3D体验,依次为IMAX 3D.普通 ...
- 4行python代码做出打字机效果
4行python代码做出打字机效果 文章目录 4行python代码做出打字机效果 前言 一.导入库 二.完整代码 前言 今天想用python做一个打字机的效果出来看看! 一.导入库 import py ...
- 详解c语言编程库题,详解C语言编程
C语言作为编程语言,其诞生已经很早,但是在编程语言多样化的今天,C仍然高居TIOBE编程语言排行榜的第一位(2014年5月),而C++语言排位第四.而位居第二位的Java本身就是脱胎于C++语言,第三 ...
- uniapp 小程序左右滑动切换不同图片序列帧,实现3d效果
uniapp 小程序左右滑动切换不同图片序列帧,实现3d效果 最近接了个新的需求,将多张序列帧图片,通过程序滑动加载不同的序列帧,给用户看到的效果就好像3d那样,360度顺逆时针旋转,一开始尝试了两种 ...
最新文章
- Rational Purify 使用及分析实例(转载)
- CloudStack的部署架构概览
- 动态生成类_springboot动态生成类属性
- 好书荐读:阿里达摩院算法专家领衔《深度学习与图像识别:原理与实践》
- c++ 字符串连接_C语言字符串操作总结大全(超详细)
- linux eth0 proxy arp,在interface vlan下敲no ip proxy-arp什么意思
- 在家办公,我比上班还累你信吗?
- [渝粤教育] 西南科技大学 程序设计语言VB 在线考试复习资料(2)
- Linux安装软件包时的“依赖关系树”算法(C#)
- 贴一篇以前写的产品推广旧文
- 谷歌Gmail注册方法
- I5 4590 台式机安装黑苹果最新版笔记
- 理解DCT与DST【一】:离散傅里叶变换
- Windows10卸载密钥导致win10未激活--解决
- 光电信息科学与工程学c语言吗,光电信息工程专业排名_光电信息科学与工程专业可以考什么专业的研究生...
- GBD数据库相关文献中的EAPC怎么算?
- 一文搞懂什么是GPA
- 小渔夫 | 一万多的椅子照样畅销全球,它是怎么做到的?
- 社交媒体2.0_社交媒体2.0:增强现实生活
- 归一化数字角频率_数字信号处理中的归一化频率