c - 2D 等距立方体绘制
问题描述
我想画一个等距立方体,如下所示,这样我就可以获得 3d 图形的直边线。第三张图片是我想要的一个例子 - 外立方体上的直线。从实验来看,这不适用于使用透视变换的 3D。
在信息图中,我尝试绘制底部正方形(剪切 30,旋转 -30),但它仍然有点偏离。
void draw_outer()
{
int ii;
int w, h;
float equiv = 0.0f;
Matrix transform = IDENTITY_MATRIX;
w = glutGet(GLUT_WINDOW_WIDTH);
h = glutGet(GLUT_WINDOW_HEIGHT);
equiv = h/(float)w;
//vert scale
ScaleMatrix(&projection, 1.0f, .861f, 1.0f);
//shear x adjusted for aspect ratio
ConstructShearMatrixX(&projection, .5236f * equiv);
//rotation
//fix aspect ratio
RotateAboutZ(&projection, -.5236f);
ScaleMatrix(&projection, equiv, 1.0f, 1.0f);
glUniformMatrix4fv(uniform_ids[0], 1, GL_FALSE, model.m);
glUniformMatrix4fv(uniform_ids[1], 1, GL_FALSE, view.m);
glUniformMatrix4fv(uniform_ids[2], 1, GL_FALSE, projection.m);
}
我的顶点着色器只是 glPosition = (Projection * View * Model * position.xyz)。
解决方案
推荐阅读
- dictionary - 在 Ansible 中动态扩展字典变量
- java - AnchorPane 内的 JavaFX BorderPane?
- html - 排序和隐藏重复字段表格 Angular 4+
- jboss - 如何在when子句中迭代drl文件中的字符串列表
- javascript - 验证在javascript中不起作用
- dependencies - 替换特定 Bower 包的主 html 文件
- android - 无法从 android 的外部存储中删除视频文件 (/storage/6638-3139/DCIM/Camera/20180503_144303.mp4)
- c# - SQLEXPRESS 出现在配置连接字符串中?
- java - 如何获取嵌入式java的版本
- javascript - augur.io 如何唯一识别设备?