图形处理
文章平均质量分 73
记录基本的计算机图形学学习轨迹
小哈龙
一颗勇往直前的心
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Algorithm to find the area of a polygon
该摘要介绍了一个多边形面积计算算法及其应用。算法通过输入顶点坐标数组(X,Y)和顶点数量,采用累加公式计算面积,结果除以2得到最终值。当顶点顺时针排列时面积为正,逆时针则为负值。算法在计算机坐标系(y轴向下)中可通过逆时针排列顶点抵消方向影响。应用场景包括计算多边形面积和判断顶点排列方向(通过面积正负值)。文中还提供了JavaScript实现示例和Kicad源码参考,后者增加了对封闭性检查和绝对值返回的处理。原创 2025-08-15 11:12:52 · 450 阅读 · 0 评论 -
OCCT渲染之SSAA
SSAA 是“暴力美学”式抗锯齿:画质最好,开销最大。适合对图像质量要求极高的场景(如离线渲染、截图、展示)。原创 2025-06-16 14:31:15 · 566 阅读 · 0 评论 -
图像渲染之锯齿问题原理解析
锯齿是因为我们用像素去近似连续图形时“看得太粗了”;抗锯齿就是想办法“看细一点、多看几眼”。注:上文摘自chatgpt。原创 2025-06-16 14:29:20 · 1239 阅读 · 0 评论 -
凸包算法详细简介以及c++实现
凸包是计算几何中包含点集的最小凸多边形,应用广泛于图像处理、路径规划等领域。常见算法包括Graham扫描法(O(nlogn))和Andrew算法(O(nlogn)),均利用向量叉积判断点是否构成凸包。Graham扫描法先找最低点并按极角排序,通过栈维护凸包;Andrew算法通过构造上下凸壳实现。两种方法都需注意共线点和精度问题。文中提供了C++实现代码,可直接用于求解点集的凸包顶点。算法选择取决于具体需求,Graham扫描稳定但实现稍复杂,Andrew算法更简单高效。原创 2025-05-28 11:14:53 · 988 阅读 · 0 评论 -
图形学曲线c++简单实现
贝塞尔曲线是一类常用的平滑曲线,通常用于矢量图形、路径动画、字体设计等。原创 2025-02-28 14:42:30 · 1055 阅读 · 0 评论 -
图形学常用曲线
图形学中的曲线通常与计算机图形、动画、几何建模等相关,用于表示物体的形状、路径或运动轨迹。与数学函数曲线相比,图形学中的曲线往往更侧重于实际应用,能够在数字模型中精确地描绘复杂的曲线和表面。原创 2025-02-28 14:36:28 · 1364 阅读 · 0 评论 -
kicad中R树的使用
元件布局和碰撞检测:加速元件间的碰撞检测。设计规则检查(DRC):快速检测元件和线路间的最小间距。自动布线:帮助快速检测布线路径的可用空间。3D 可视化与碰撞检测:提高元件间物理碰撞检测的效率。R 树通过提供高效的空间查询能力,在大规模设计中加速空间计算和碰撞检测,帮助 KiCad 实现更快、更精确的设计验证。虽然 KiCad 的具体实现细节可能因版本不同而有所变化,但 R 树作为一个强大的空间索引工具,在 PCB 设计优化中扮演着重要角色。原创 2025-02-26 17:41:23 · 1049 阅读 · 0 评论 -
C++ 构建 BVH 树
在 BVH 中,每个节点通常包含一个包围盒,常见的包围盒类型是,它是与坐标轴对齐的矩形盒子。首先,我们定义一个简单的AABB// 向量减法// 向量加法// 计算向量的最大值// 计算向量的最小值// 包围盒的最小和最大坐标AABB() {// 更新包围盒// 判断两个包围盒是否相交内部节点(包含子节点)和叶子节点(包含物体或三角形)。AABB bbox;// 包围盒// 左子节点// 右子节点// 对应物体的索引(叶子节点)// 叶子节点构造。原创 2025-02-13 17:25:52 · 1035 阅读 · 0 评论 -
BVH树简介
BVH 树是一种以层次结构组织的包围盒(Bounding Volume)数据结构,通常用来提高渲染效率、碰撞检测效率和光线追踪等操作的性能。它通过将对象或场景中的几何体分层包围在一个个简单的包围体(通常是矩形、球体、盒子等)内来优化计算。BVH 树的主要目标是通过减少需要处理的元素数目来提高计算速度。通过将场景中的物体分组并在每个分组上使用一个简单的包围盒来描述其边界,减少了对每个物体的单独检测。原创 2025-02-13 17:23:38 · 1501 阅读 · 0 评论 -
UV坐标概述
通常,UV坐标的取值范围是[0, 1],其中(0, 0)表示纹理的左下角,(1, 1)表示右上角。然而,UV坐标可以超出此范围,导致纹理的重复、镜像或拉伸,具体行为取决于纹理的环绕方式(Wrap Mode)。每个三维模型的顶点都关联有一组UV坐标,指示该顶点在纹理图像上的位置。通过这些坐标,渲染引擎能够将纹理正确地应用到模型表面。通过UV坐标,三维模型的表面可以精确地映射到二维纹理图像上,实现复杂的视觉效果。是计算机图形学中用于将二维纹理映射到三维模型表面的坐标系统。原创 2025-02-12 10:10:48 · 1166 阅读 · 0 评论 -
VS2017+Qt5.12.9+CMake3.30.2编译VTK 9.2.0
首先,切换到Debug模式,生成ALL_BUILD项目,编译所有需要项目,编译完成之后,再切换至Release模式,生成ALL_BUILD项目,编译所有需要项目,Debug模式和Release模式都编译完成之后,1.个人习惯创建以下目录,一个源码目录,Build为vs解决方案输出目录和编译输出以及中间生成文件目录。再生成INSTALL项目,就会在指定目录将编译好的文件打包在一起,方便作为开发包开发,如下图。vs2017,QT,Cmake自行下载准备,3.打开VS解决方案,编译源代码。原创 2024-11-01 15:48:29 · 911 阅读 · 0 评论 -
向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读
向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组;向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,转载 2024-05-23 17:03:02 · 437 阅读 · 0 评论 -
glPushMatrix/glPopMatrix简介及示例(在不同位置绘制图形)
例如,在调用 glTranslatef(1.0, 0.0, 0.0) 之后,当前矩阵会被更新成平移矩阵,在调用glRotatef(30, 0.0, 1.0, 0.0)之后,当前矩阵会被更新成旋转矩阵。在绘制圆柱体时,需要对每个圆柱体进行不同的平移和旋转变换,所以需要使用glPushMatrix()函数将当前矩阵压入栈中,这样可以保证每个圆柱体之间互不影响。glPushMatrix() 函数将当前矩阵复制一份并压入栈中,这样就可以在之后的操作中使用栈顶的矩阵进行变换而不会影响之前的变换。转载 2024-02-01 14:23:12 · 765 阅读 · 0 评论 -
投影矩阵和视口变换矩阵(math-projection and viewport matrix)
写在前面前面几节分别介绍了,本节继续学习坐标变换过程中的投影变换。这里主要是从数学角度推导投影矩阵。,这里对他的推导思路稍微进行了整理。通过本节可以了解到。转载 2024-01-30 17:08:08 · 951 阅读 · 0 评论 -
插值与拟合
对于情况较复杂的实际问题(因素不易化简,作用机理不详)可直接使用数据组建模型,寻找简单的因果变量之间的数量关系, 从而对未知的情形作预报。拟合模型的组建是通过对有关变量的观测数据的观察、分析和选择恰当的数学表达方式得到的。插值与拟合方法就是要通过这些数据去确定某一类已知函数的参数或寻求某个近似函数,使所得到的近似函数与已知数据有较高的拟合精度。实际问题当中碰到的函数 f (x) 是各种各样的,有的表达式很复杂,有的甚至给不出数学的式子,只提供了一些离散数据,譬如,某些点上的函数值和导数值。转载 2023-08-21 15:22:57 · 394 阅读 · 0 评论 -
GetDIBits 遍历位图 获取像素的颜色值(RGB)
GetDIBits 遍历位图 获取像素的颜色值(RGB)CBitmap m_bmp;//根据位图资源导入之后的ID来获得位图m_bmp.LoadBitmap(IDB_BITMAP_ORIGIN);接下来就是通过GetDIBits函数来对位图的像素进行遍历,获取RGB转载 2022-06-13 16:36:42 · 1241 阅读 · 0 评论 -
c++利用StretchBlt函数改变CImage输出图片的位置
一.问题最近在使用CImage类生成图片时,遇到了一个问题,输出的图片上下颠倒,这是什么情况,如何将图片上下颠倒(或者左右颠倒呢),后来来查阅了资料,发现在使用StretchBlt时,通过参数设置可以实现。二.解决方案1.首先看一下StretchBlt这个函数功能:该函数从源矩形中复制一个位图到目标矩形,必要时按目标设备设置的模式进行图像的拉伸或压缩。(函数简介资料来自百度百科)BOOL StretchBlt(HDC hdcDest, int nXOriginDest, int nYO原创 2022-04-02 16:42:24 · 1754 阅读 · 0 评论 -
OpenGL的版本历史和发展
从未停止!OpenGL的版本历史和发展由于本文的内容过长,在Chrome浏览器下可能不能完全显示,建议使用IE或者FireFox阅读本文。来源请注明,本文永久地址为从未停止!OpenGL的版本历史和发展 - YangZhao1992 - 博客园OpenGL®作为业界最为广泛使用的2D和3D图形接口标准,应用在成千上万的各式各样的计算机的程序中。从初期的崭露头角,到与Direct3D激烈竞争,后经历黯淡被Khronos接手又发扬光大,已经历经波折发展了20年。由于过去的黯淡,至今甚至仍有人站在转载 2022-02-16 17:12:38 · 5433 阅读 · 1 评论 -
Opencascade关键词
1. chamfer 倒角 vsfillet 圆角:2.boolean operatiron(布尔操作): common(交集),fuse( ),cut(差集);3.depressions(凹陷), protrusions(突起), ribs and grooves(凹槽) or slots(槽) along planar(平面) or revolution surfaces(旋转平面)4.OpenCascade图像文件格式:VRML (Virtual Reality Modelin..转载 2021-09-11 13:02:05 · 702 阅读 · 0 评论 -
Altium Designer 15 PCB图层详解
对于Altium Designer 15 PCB布线的初学者来说,首先要做的事情就是了解PCB的各个图层的用途。下面我们就通过图文一同来了解一下各个图层的用途吧。主要用到的图层:mechanical 机械层keepout layer 禁止布线层Signal layer 信号层Internal plane layer 内部电源/接地层top overlay 顶层丝印层bottom overlay 底层丝印层top paste 顶层助焊层bottom paste 底层助焊层.转载 2021-06-21 15:17:10 · 5355 阅读 · 0 评论 -
四叉树空间索引原理及其实现
四叉树索引的基本思想是将地理空间递归划分为不同层次的树结构。它将已知范围的空间等分成四个相等的子空间,如此递归下去,直至树的层次达到一定深度或者满足某种要求后停止分割。四叉树的结构比较简单,并且当空间数据对象分布比较均匀时,具有比较高的空间数据插入和查询效率,因此四叉树是GIS中常用的空间索引之一。常规四叉树的结构如图所示,地理空间对象都存储在叶子节点上,中间节点以及根节点不存储地理空间对象。四叉树示意图四叉树对于区域查询,效率比较高。但如果空间对象分布不均匀,随着地理空间对象的不..转载 2021-06-17 16:28:14 · 3999 阅读 · 0 评论 -
使用C++进行SVG开发
进行SVG开发的时候,可以使用的语言有很多钟。其中,JAVA对SVG的支持比较好,而且有相应的开发包。这里就不讲JAVA方面,主要讲一下使用C++进行SVG方面的开发。 不懂SVG的先看我博客的两篇关于SVG方面的文章再来看这篇文章。SVG是基于XML的可扩展矢量图形。说简单了,它是一个规范,跟C++语言一样。大家只要按照这个规范去编写,SVG解析器就能够把你编写的文件解析并渲染成图形。从这个层面来说,SVG是属于一门语言。既然它的基础是XML,所以我们只要按照XML的方式来操作SVG文...转载 2021-06-09 18:18:40 · 3621 阅读 · 0 评论 -
CAD文件转换为SVG文件
详细剖析了CAD的图形交换格式———DXF文件的结构,分析了SVG文件的框架元素和图形元素,建立了CAD中的对象、DXF文件中的实体和SVG中的元素三者之间的对应表,并对转换中遇到的难点问题提出了解决方案,最后,通过编程实现验证了方法的可行性。 来源:SVG中国(ChinaSVG.COM) [SVG中国专题文章]引言 目前CAD技术已广泛应用于建筑设计、机械设计、城市规划、交通等领域,由其主流软件AutoCAD或在之基础上二次开发的软件生成的图纸层出不穷。 SVG(Scalable Vect..转载 2021-06-09 15:30:24 · 6643 阅读 · 0 评论
分享