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

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

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

 #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. 进入OS前的两步之PendSV(任务切换)

    先了解下如何使用PendSV异常.(为何要使用PendSV而不是其他的异常,请参考<cortex-M3权威指南>) 1,如何设定PendSV优先级? NVIC_SYSPRI14 EQU 0 ...

  2. 探索Aspnetcore+mysql+efcore

    摘要 之前尝试了,新建asp.net core站点,那么如何和mysql建立连接,如果操作mysql?本篇将尝试使用EntityFrameworkCore进行mysql的操作. 一个例子 首先新建一个 ...

  3. 【Bootstrap】Bootstrap-select多选下拉框实现

    目录 前言 需要引用的它们 核心选项 核心方法 实例应用 回到顶部 前言 项目中要实现多选,就想到用插件,选择了bootstrap-select. 附上官网api链接,http://silviomor ...

  4. HDU 1003 maxsum

    #include<iostream> #include<vector> using namespace std; typedef struct { int maxsum; in ...

  5. nyoj 71 独木舟上的旅行(贪心专题)

    独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...

  6. css-单位%号-background-size-background-position-遁地龙卷风

    (-1)写在前面 我用的是chrome49,这篇是为后续做准备.重要性的调整以及毕业资料的整体导致最近没看JQuery和H5特效,以后只能晚上看了. (0)准备 div长宽都为300px,我们一张大小 ...

  7. MFCC特征提取(C语言版本)

    音频分析中,MFCC参数是经典参数之一.之前对于它的计算流程和原理,大体上是比较清楚的,所以仿真的时候,都是直接调用matlab的voicebox工具或者开发的时候直接调用第三方库.最近想整理一个纯C ...

  8. 解决ThinkPHP Call to a member function assign() on a non-object

    <ignore_js_op> assign是tp模板输出变量的一个方法.没有object只能说没实例化...<ignore_js_op> 经过几番思索,终于发现了.原来是Act ...

  9. Palindrome Number

    Determine whether an integer is a palindrome. Do this without extra space. public class Solution { p ...

  10. map set区别

    STL中的容器有顺序容器 (vector,list,deque),关联容器(map,set)还有一些其他容器.根据不同的场合选择不同的容器,会有意想不到的收获. Map是单词mapping(映射)的缩 ...