当前位置: 首页 > news >正文

沈阳网站建设优化网站怎么做seo_

沈阳网站建设优化,网站怎么做seo_,中国建设银行网站查询密码,中山外贸营销网站建设要实现3D空间中的点坐标转换为屏幕二维点坐标,需要进行透视变换和投影变换。以下是一些基本的思路和示例代码,可以用于实现主视图、侧视图、俯视图、正等轴投影。 1. 主视图投影 主视图投影是指以一个点作为视点,从一个方向观察物体&#x…

要实现3D空间中的点坐标转换为屏幕二维点坐标,需要进行透视变换和投影变换。以下是一些基本的思路和示例代码,可以用于实现主视图、侧视图、俯视图、正等轴投影。

1. 主视图投影

主视图投影是指以一个点作为视点,从一个方向观察物体,投影到一个平面上。通常情况下,主视图的观察方向是从正面,也就是Z轴负方向。投影平面一般是平行于X-Y平面。

具体实现可以通过以下步骤完成:

  • 定义观察点坐标和投影平面距离
  • 对3D坐标进行透视变换
  • 对透视变换后的坐标进行投影变换
  • 将投影后的坐标映射到屏幕上

示例代码:

int x_2d = (int) (x_3d / (z_3d - view_point_z) * distance_to_projection_plane);
int y_2d = (int) (y_3d / (z_3d - view_point_z) * distance_to_projection_plane);

2. 侧视图投影

侧视图投影是指以一个点作为视点,从一个方向观察物体,投影到一个平面上。通常情况下,侧视图的观察方向是从侧面,也就是X轴正方向。投影平面一般是平行于Y-Z平面。

具体实现可以通过以下步骤完成:

  • 定义观察点坐标和投影平面距离
  • 对3D坐标进行透视变换
  • 对透视变换后的坐标进行投影变换
  • 将投影后的坐标映射到屏幕上

示例代码:

int x_2d = (int) (y_3d / (x_3d - view_point_x) * distance_to_projection_plane);
int y_2d = (int) (z_3d / (x_3d - view_point_x) * distance_to_projection_plane);

3. 俯视图投影

俯视图投影是指以一个点作为视点,从一个方向观察物体,投影到一个平面上。通常情况下,俯视图的观察方向是从上方,也就是Y轴正方向。投影平面一般是平行于X-Z平面。

具体实现可以通过以下步骤完成:

  • 定义观察点坐标和投影平面距离
  • 对3D坐标进行透视变换
  • 对透视变换后的坐标进行投影变换
  • 将投影后的坐标映射到屏幕上

以下是一个简单的示例代码,用于将3D空间中的点坐标转化为屏幕二维点坐标。这里包括了主视图、侧视图、俯视图、正等轴投影的实现。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480typedef struct {double x, y, z;
} Point3D;typedef struct {int x, y;
} Point2D;void project_ortho(Point3D point_3d, Point2D *point_2d, double distance_to_projection_plane) {point_2d->x = (int) point_3d.x;point_2d->y = (int) point_3d.y;
}void project_isometric(Point3D point_3d, Point2D *point_2d, double distance_to_projection_plane) {point_2d->x = (int) ((point_3d.x - point_3d.z) * cos(30 * M_PI / 180));point_2d->y = (int) ((point_3d.y - (point_3d.x + point_3d.z) * sin(30 * M_PI / 180)) * cos(30 * M_PI / 180));
}void project_main(Point3D point_3d, Point2D *point_2d, Point3D view_point, double distance_to_projection_plane) {double z_3d = point_3d.z - view_point.z;point_2d->x = (int) (point_3d.x - view_point.x) * distance_to_projection_plane / z_3d + SCREEN_WIDTH / 2;point_2d->y = (int) (point_3d.y - view_point.y) * distance_to_projection_plane / z_3d + SCREEN_HEIGHT / 2;
}void project_side(Point3D point_3d, Point2D *point_2d, Point3D view_point, double distance_to_projection_plane) {double x_3d = point_3d.x - view_point.x;point_2d->x = (int) (point_3d.y - view_point.y) * distance_to_projection_plane / x_3d + SCREEN_WIDTH / 2;point_2d->y = (int) (point_3d.z - view_point.z) * distance_to_projection_plane / x_3d + SCREEN_HEIGHT / 2;
}void project_top(Point3D point_3d, Point2D *point_2d, Point3D view_point, double distance_to_projection_plane) {double y_3d = point_3d.y - view_point.y;point_2d->x = (int) (point_3d.x - view_point.x) * distance_to_projection_plane / y_3d + SCREEN_WIDTH / 2;point_2d->y = (int) (point_3d.z - view_point.z) * distance_to_projection_plane / y_3d + SCREEN_HEIGHT / 2;
}int main() {// Define the 3D points of a cubePoint3D cube[8] = {{-50, -50, -50},{50, -50, -50},{50, 50, -50},{-50, 50, -50},{50, -50, 50},{50, 50, 50},{-50, 50, 50},{-50, -50, 50},};// Define the view point for the main, side, and top projectionsPoint3D main_view_point = {0, 0, 200};Point3D side_view_point = {-200, 0, 0};Point3D top_view_point = {0, 200, 0};// Define the distance from the projection plane for the orthogonal and isometric projectionsdouble distance_to_ortho_projection_plane = 200;double distance_to_isometric_projection_plane = 200 / cos(30 * M_PI / 180);// Project the 3D points to 2D points for each projectionPoint2D main_projection[8];Point2D side_projection[8];Point2D top_projection[8];Point2D ortho_projection[8];Point2D iso_projection[8];int i;for (i = 0; i < 8; i++) {project_main(cube[i], &main_projection[i], main_view_point, distance_to_ortho_projection_plane);project_side(cube[i], &side_projection[i], side_view_point, distance_to_ortho_projection_plane);project_top(cube[i], &top_projection[i], top_view_point, distance_to_ortho_projection_plane);project_ortho(cube[i], &ortho_projection[i], distance_to_ortho_projection_plane);project_isometric(cube[i], &iso_projection[i], distance_to_isometric_projection_plane);}// Draw the 2D projections// ...// Your code to draw the projections goes here// ...return 0;
}

http://www.yayakq.cn/news/711751/

相关文章:

  • js跳转网站怎么做计算机应用软件开发流程图
  • 有需要网站建设的没网站辅助色怎么用
  • 潍坊网站建设wfxtseo网站的关键词排名
  • 企业网站如何制作西充县住房和城乡建设局网站
  • 游戏秒玩网站网站制作步骤是什么
  • 写简历的网站网站建设应该应聘什么岗位
  • 正规刷手机单做任务网站个人网站页面设计需要那些步骤
  • 食品网站的功能定位网站实现搜索功能
  • gooood谷德设计网站青岛网站排名多少钱
  • 赣州网站设计有哪些网站标题一样
  • 装修设计那个网站好免费建立网站软件
  • wordpress访问3秒以上重庆seo计费管理
  • 简洁的网站地图模板制作网页模板素材
  • 网站建设文化流程图网站数据库安装教程
  • 宽屏公司网站源码php怎么样通过做网站赚钱
  • 无锡设计网站给别人做网站怎么赚钱吗
  • 做网站需要用c语言吗如何还原wordpress
  • 网站建设的目标是石家庄seo网站优化价格
  • mi2设计公司网站网站服务器作用
  • 长沙网站建设专家别墅外观设计网站推荐
  • 网站类型有百度人工
  • 龙之向导外贸网站怎么样长沙企业网站制作
  • 社区微网站建设方案ppt高权重友情链接
  • 有哪些做包装设计网站好些惠阳东莞网站建设
  • 能源科技网站建设上杭网站设计公司
  • 做一个平台 网站服务器搭建单位宣传册设计样本
  • 彩票网站wordpress模板网页设计适合女生吗
  • 政务网站建设目标成都科技网站建设找哪家
  • 网站背景磨砂灰背景怎么做重庆企业建站系统
  • 长春做网站设计和淘宝同时做电商的网站