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

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

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

 #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. 网络中两台主机的通信过程(TCP)

    两台主机通信有两种情况:1.在同一网段中 2.不在同一网段中 (1.)在同一网段的通信过程 主机在应用层上的操作: TCP/IP协议上tcp的端口对应的各种应用程序,客户机要访问某个应用程序就会要求打 ...

  2. JS之Form表单相关操作

    获取ID组件的值 var userid=document.getElementById('userid').value;var cdkey=document.getElementById('cdkey ...

  3. Spring 入门知识

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

  4. PHP中类的继承和构造函数的继承

    PHP4.x 版本: PHP 4.x 的构造函数名与类名相同. 子类的构造函数名与子类名相同(废话). 在子类里父类的构造函数不会自动执行. 要在子类里执行父类的构造函数,必须执行类似以下语句: $t ...

  5. 如何对Azure磁盘性能进行测试

    Azure的云存储一直是Azure比较自豪的东西,想到AWS的LSA后面有若干个9,搞得大家都以为它的存储最优秀,其实不然,Azure存储到现在没有丢过客户1bit的数据,但是Azure不会去说我们的 ...

  6. 关于CDN的认识

    传统的未加缓存服务的访问过程: 用户提交域名→浏览器对域名进行解释→得到目的主机的IP地址→根据IP地址访问发出请求→得到请求数据并回复 由上可见,用户访问未使用CDN缓存网站的过程为: 1).用户向 ...

  7. BZOJ3436——小K的农场

    1.题意:大概是给一些制约限制,问是否存在合法解 2.分析:我们来观察这三个限制 农场a比农场b至少多种植了c个单位的作物     可以变成b 比 a至多多种了-c 农场a比农场b至多多种植了c个单位 ...

  8. coding.net就这么横空出世

    各位新生们好: 看罢以上的开场白博客,我们也算初步完成了一个小程序——hello world.再进一步想下去,若我们程序写大了,要不停修改了(1000行代码不长,只争朝夕:-D),该如何保存呢?保存到 ...

  9. Wampserver主机服务配置方法

    一.更改根目录  1.左键”www目录”路径更改Wampserver安装好后,“www目录”默认为X:\wamp\www,也就是wampserver安装目录下的www文件夹.实际使用中,默认设置往往不 ...

  10. 去哪儿网输入框三种输入方式(selenium webdriver 干货)

    在机票预定的页面,输入出发城市和到达城市输入框的时候, 发现直接使用sendkeys不好使, 大部分情况出现输入某城市后没有输入进去, 经过几天的研究,发现可以采取三种方式: 1. 先点击输入框,待弹 ...