我们模拟从被观察物体射出光线,在眼球焦点交汇,然后打到视网膜上成像

——足够了吧,剩下的难度应该是普及-

只是有一些常数可以自己调一下,看着顺眼就好

 #include <graphics.h>
#include <cstdio>
VECTOR3D a;
VECTOR3D b;
VECTOR3D c;
VECTOR3D d;
VECTOR3D a1;
VECTOR3D b1;
VECTOR3D c1;
VECTOR3D d1;
float k=;
#define fudu 0.1
#define len 1
#define lenz 20
#define ox 300
#define oy 300
int one=;
float sdx(VECTOR3D a)
{
return (ox+one*a.x/(a.z+lenz)*len);
}
float sdy(VECTOR3D a)
{
return (oy+one*a.y/(a.z+lenz)*len);
}
void li(VECTOR3D a,VECTOR3D b)
{
line_f(sdx(a),sdy(a),sdx(b),sdy(b));
}
void mia(VECTOR3D a,VECTOR3D b,VECTOR3D c)
{
int mian[]=
{
sdx(a),sdy(a),
sdx(b),sdy(b),
sdx(c),sdy(c),
};
fillpoly(,mian);
}
void print()
{
cleardevice();
setcolor(0xFFFFFF);
setfillcolor(0x9999FF);
mia(a,b,c);
mia(a,b,d);
mia(a,c,d);
mia(d,b,c);
mia(a1,b1,c1);
mia(a1,b1,d1);
mia(a1,c1,d1);
mia(d1,b1,c1);
li(a,b);
li(b,c);
li(c,d);
li(d,a);
li(a,c);
li(b,d);
li(a1,b1);
li(b1,c1);
li(c1,d1);
li(d1,a1);
li(a1,c1);
li(b1,d1);
delay_ms();
}
void change()
{
char ch=getch();
if(ch=='w')
{
a.Rotate(fudu,,,);
b.Rotate(fudu,,,);
c.Rotate(fudu,,,);
d.Rotate(fudu,,,);
a1.Rotate(fudu,,,);
b1.Rotate(fudu,,,);
c1.Rotate(fudu,,,);
d1.Rotate(fudu,,,);
}
else
if(ch=='s')
{
a.Rotate(fudu,-,,);
b.Rotate(fudu,-,,);
c.Rotate(fudu,-,,);
d.Rotate(fudu,-,,);
a1.Rotate(fudu,-,,);
b1.Rotate(fudu,-,,);
c1.Rotate(fudu,-,,);
d1.Rotate(fudu,-,,);
}
else
if(ch=='a')
{
a.Rotate(fudu,,,);
b.Rotate(fudu,,,);
c.Rotate(fudu,,,);
d.Rotate(fudu,,,);
a1.Rotate(fudu,,,);
b1.Rotate(fudu,,,);
c1.Rotate(fudu,,,);
d1.Rotate(fudu,,,);
}
else
if(ch=='d')
{
a.Rotate(fudu,,-,);
b.Rotate(fudu,,-,);
c.Rotate(fudu,,-,);
d.Rotate(fudu,,-,);
a1.Rotate(fudu,,-,);
b1.Rotate(fudu,,-,);
c1.Rotate(fudu,,-,);
d1.Rotate(fudu,,-,);
}
else
if(ch==' ')
{
a.Rotate(fudu,,,);
b.Rotate(fudu,,,);
c.Rotate(fudu,,,);
d.Rotate(fudu,,,);
a1.Rotate(fudu,,,);
b1.Rotate(fudu,,,);
c1.Rotate(fudu,,,);
d1.Rotate(fudu,,,);
}
else
if(ch=='[')
one-=;
else
if(ch==']')
one+=;
}
int main()
{
printf("wasd旋转[]缩放");
delay();
initgraph(ox*,oy*);
setrendermode(RENDER_MANUAL);
a.x=;
a.y=;
a.z=-1.4142135623730950488016887242097/;
b.x=;
b.y=;
b.z=1.4142135623730950488016887242097*1.5;
c.x=-1.7320508075688772935274463415059;
c.y=-;
c.z=-1.4142135623730950488016887242097/;
d.x=1.7320508075688772935274463415059;
d.y=-;
d.z=-1.4142135623730950488016887242097/;
a1.x=1.7320508075688772935274463415059;
a1.y=;
a1.z=1.4142135623730950488016887242097/;
b1.x=-1.7320508075688772935274463415059;
b1.y=;
b1.z=1.4142135623730950488016887242097/;
c1.x=;
c1.y=-;
c1.z=1.4142135623730950488016887242097/;
d1.x=;
d1.y=;
d1.z=-1.4142135623730950488016887242097*1.5;
print();
while()
{
change();
print();
}
}

画了一个梅塔特隆立方体玩玩,看着应该比较顺眼

【水】基于ege的简单3D模拟的更多相关文章

  1. 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)

    我们上一篇<基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)>主要讲解了如何搭建一个实时数据通讯服务器,客户端与服务端是如何通讯的,相信通过上一篇的讲解,再配 ...

  2. 基于modelsim-SE的简单仿真流程—下

    基于modelsim-SE的简单仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile A ...

  3. 基于HTML5的燃气3D培训仿真系统

    最近上线了的基于HTML5的燃气3D培训仿真系统,以前的老系统是采用基于C++和OpenGL的OpenSceneGraph引擎设计的,OSG引擎性能和渲染效果各方面还是不错的,但因为这次新产品需求要求 ...

  4. 基于 HTML5 的 WebGL 3D 档案馆可视化管理系统

    前言 档案管理系统是通过建立统一的标准以规范整个文件管理,包括规范各业务系统的文件管理的完整的档案资源信息共享服务平台,主要实现档案流水化采集功能.为企事业单位的档案现代化管理,提供完整的解决方案,档 ...

  5. 基于 HTML5 WebGL 的 3D 风机 Web 组态工业互联网应用

    基于 HTML5 WebGL 的 3D 风机 Web 组态工业互联网应用 前言 在目前大数据时代背景之下,数据可视化的需求也变得越来越庞大,在数据可视化的背景之下,通过智能机器间的链接并最终将人机链接 ...

  6. Netty学习——基于netty实现简单的客户端聊天小程序

    Netty学习——基于netty实现简单的客户端聊天小程序 效果图,聊天程序展示 (TCP编程实现) 后端代码: package com.dawa.netty.chatexample; import ...

  7. 基于modelsim-SE的简单仿真流程—上

    基于modelsim-SE的简单仿真流程 编写RTL功能代码 要进行功能仿真,首先得用需要仿真的模块,也就是RTL功能代码,简称待测试的模块,该模块也就是在设计下载到FPGA的电路.一个电路模块想要有 ...

  8. 基于css3的文字3D翻转特效

    一款基于css3的文字3D翻转特效.这款特效当鼠标经过文字的时候3D翻转显示阴影.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="compo ...

  9. PhantomJS实现最简单的模拟登录方案

    以前写爬虫,遇到需要登录的页面,一般都是通过chrome的检查元素,查看登录需要的参数和加密方法,如果网站的加密非常复杂,例如登录qq的,就会很蛋疼 在后面,有了Pyv8,就可以把加密的js文件扔给它 ...

随机推荐

  1. mui jquery 同时使用

    (function ($, doc, $$) { $.init(); $.ready(function () { var cityPicker = new $.PopPicker({ layer: } ...

  2. Spring 入门知识

    ------------------------------------------------------------------------------------- Spring是什么? Spr ...

  3. myeclipse 第一步

    今天查myeclipse的一个不常用快捷键的时候,意外发现了一个学习myeclipse开端的博文(别问我是怎么查到这篇博文的....两个字:顺手),感觉比较详细,特意记下来, 别人的分享博客: htt ...

  4. ORACLE 触发器

    •1.1 触发器类型 • DML触发器 • 替代触发器 • 系统触发器 •1.2 创建触发器 • 触发器触发次序 • 创建DML触发器 • 创建替代(INSTEAD OF)触发器 • 创建系统事件触发 ...

  5. PHP变量入门教程(2)超全局变量,总共9个

    PHP 超全局变量 $GLOBALS 包含一个引用指向每个当前脚本的全局范围内有效的变量.该数组的键标为全局变量的 名称.从 PHP 3 开始存在 $GLOBALS 数组. $_SERVER 变量由 ...

  6. 如何取消 DiscuzX 帖子被系统自动隐?

    设置路径: 全局 -> 站点功能 -> 帖子阅读 -> 启用隐藏水帖,选择“否”

  7. 如何给外部引用的js文件传递参数

    1.定义全局变量 <script language="javascript"> var g = "I'm here"; </script> ...

  8. MySql: show databases/tables use database desc table

    1. show databases mysql> show databases;+--------------------+| Database |+--------------------+| ...

  9. python 3.5.2 install pillow

    1. 首先尝试从官网下载, pip install pillow, 结果网络不行,总是连不上或者下载中就失败, C:\Windows\system32>pip install pillowCol ...

  10. delphi 各新版本特性收集

    delphi 各新版本特性收集 http://www.cnblogs.com/dreamszx/p/3602589.html