左上填充规则

用python写九九乘法表(左上三角、左下三角、右上三角、右下三角、正三角形、倒三角形格式) 【代码】用python写九九乘法表(左上三角、左下三角、右上三角、右下三角、正三角形、倒三角形格式) 阅读详情

左上填充规则

by Goncely

 

摘   要 :对左上填充规则进行详细介绍的资料很少,而理解左上填充规则对于编写光栅化器至关重要。本文对光栅化的原理和左上填充规则进行了详细描述,描述的时候尽可能做到易懂、详尽,如果读者还是有不明白的地方请给我留言,我会将没有论述清楚的地方补充完善。

1 、概述

光栅化的时候通常会遇到一个术语,那就是左上填充规则( top-left rule ),它的作用是为了避免相邻的多边形重复绘制邻边。如图 1 所示,如果没有左上填充规则,绘制三角形 ABD 和 BCD 的时候,有可能同时绘制 BD 边,导致 BD 被绘制 2 次。乍一看,除了稍微影响点效率外,重复绘制好像也没什么坏处,不过在处理透明度和模板( stenciling )的时候,重复渲染三角形的邻边会让结果出现严重的瑕疵。

 

图1 相邻的三角形

2 、定义

说到左上填充规则,不得不先说光栅化。光栅化的本质是确定绘制哪些离散的像素点(更确切的说是像素块),如图 2 所示,填充图中的三角形时,光栅化器会决定对哪些像素着色。

一般来说,光栅化器的输入是多边形的顶点坐标,这些顶点坐标构成一个封闭的多边形。当需要填充该多边形时,一个直观的想法便是绘制所有位于多边形内部的像素。那又如何判断像素块位于多边形的内部呢?通常以像素块的中心点作为判断依据,只要像素块的中心点(图 2 中的叉叉)位于多边形内部,便认为该像素块也位于多边形内部。那么当像素块的中心点恰好在多边形的边上怎么办?如图 2 中三角形,有 6 个像素块的中心点和底边重合,在填充这个三角形的时候是否要对这 6 个像素块着色呢?这就是问题的关键所在,也是左上填充规则的由来之处。如果简单的认为像素都应着色或都不着色,会致使重复填充或出现漏点。

图2  三角形光栅化的示意图

 

左上填充规则约定,当像素块中心点和多边形的左边或者上边重合时,该像素块位于多边形内部,填充多边形时需要着色;相反,当像素块的中心点和多边形的右边或者底边重合时,该像素块位于多边形外部,填充多边形时不需要着色。比如,当需要光栅化一个 [0 , 5] 区间的正方形时,需要渲染 [0 , 4] 区间的所有像素块,而第 5 行(底边)和第 5 列(右边)的像素则不渲染,结果如图 3 所示。运用左上填充规则光栅化连续的多边形时,既不会有漏点,也避免了重复绘制。

图3  四边形的光栅化图

3 、左边和上边

首先看一下图 4 ,四个三角形的深黑色边是左边或上边,灰色变是右边或底边。图中对于左边和上边的确定有的很形象也很好理解,有的可能就不那么容易理解了,比如右上方的三角形,它的下面那条边更像是底边,而不是左边。其实除了右下方三角形的水平边是上边外,其余的黑色边都是左边,而所有的灰色边都是右边。

设计一个用于填充n阶方阵的上三角区域的程序。填充规则是:使用1,2,3...的自然数列,从左上角开始, 按照顺时针方向螺旋填充 题目7:方阵的主对角线之上称为“上三角”。 请你设计一个用于填充n阶方阵的上三角区域的程序。填充规则是:使用1,2,3…的自然数列,从左上角开始, 按照顺时针方向螺旋填充。 例如:当n=3时,输出: 1 2 3 6 4 5 当n=4时,输出: 1 2 3 4 9 10 5 8 6 7 当n=5时,输出: 1 2 3 4 5 12 13 14 6 11 15 7 10 8 9 程序运行时,要求用户输... 阅读详情

相关推荐

Java实现环形矩阵的填充

具体地,我们从左到右填充上侧元素,从上到下填充右侧元素,从右到左填充下侧元素,从下到上填充左侧元素。假设环形矩阵的大小为n×n,我们将从矩阵的左上角开始,按照顺时针方向依次填充矩阵的元素,直到将矩阵填满。环形矩阵是一种特殊的矩阵结构,其元素按照环形的方式排列。在本文中,我们将详细介绍如何使用Java语言实现环形矩阵的填充,并给出相应的源代码。方法,并传入矩阵的大小为了演示环形矩阵的填充,我们将矩阵的大小设定为5。最后,我们判断矩阵大小n的奇偶性,如果n为奇数,我们将最后一个元素填充到矩阵的中心位置。

CyberByte的博客 139

多边形填充与种子填充算法实战详解

简介:在计算机图形学中,多边形填充是实现闭合图形着色的基础技术,广泛应用于CAD、游戏开发和图像处理等领域。本文深入讲解扫描线填充与种子填充两种核心方法:扫描线填充通过水平扫描与交点计算实现规则填充,适用于多种多边形;种子填充则基于连通性从内部像素扩散,适合不规则或含孔区域。此外,还介绍结合两者优势的多边形种子填充策略,并探讨其在现代图形API中的应用基础。掌握这些原理对图形渲染优化和底层算法调试具有重要意义。

weixin_28850145的博客 1105

左上填充规则的光栅化演示程序(静态编译发行版)

为了便于理解坐上填充规则,特意做了一个演示程序,只要输入三角形顶点就可以看到渲染结果。我用她来测试我的软件光栅化器,帮了我很大忙,解决了一个困扰我近半个月的问题,希望能给大家带来帮助。如果有人想对该程序进行完善和扩充(有很多想到的实用功能没有实现),我很乐意提供源代码,只需要给我留言即可。

详解CSS中左上朝向三角形(Top-Left Triangle)的几种制作方式

今天我们介绍几种,用css实现左上朝向三角形(Top-Left Triangle)的写法。 示意图(以宽高各60px为例): 这种三角形,一般可以用来做“对话框”类型图形的左下小脚。 第一种: #triangle-topleft { border: 30px solid #e6686e; height: 0; width: 0; border-right-color: transparent; border-bottom-color: transparent; } 第二种: #triangle-topleft { width: 0; height: 0;

类银河恶魔城游戏开发学习笔记(0)

解决B站搬运【Unity教程】从0编程制作类银河恶魔城游戏P37中moveState和idleState循环切换的问题

Gellar的博客 1448

产业大脑+未来工厂:揭秘浙江数字经济系统的5大核心场景搭建指南

本文深入解析了“产业大脑+未来工厂”这一浙江数字经济系统的核心范式,并提供了五大核心场景的实战搭建指南。文章详细阐述了从供应链协同、产能共享到产品创新、质量追溯及绿色低碳等关键场景的构建逻辑与技术架构,旨在帮助企业实现从技术驱动到场景驱动的价值落地,破解数据孤岛难题,提升产业链整体效能。

mac99的博客 667

DDM-MIMO-FMCW雷达速度模糊与解模糊MATLAB仿真

本文深入解析了DDM-MIMO-FMCW雷达中的速度模糊现象及其解模糊方法,通过MATLAB仿真详细展示了相位编码解调、速度扩展算法和混合波形设计三大解决方案。文章还提供了参数配置、信号建模和结果可视化的实用技巧,并分享了工程实践中的避坑指南,帮助开发者高效解决雷达信号处理中的速度模糊问题。

weixin_31528001的博客 350

信创迁移实战:在银河麒麟V10-SP1上为Milvus离线部署Docker(附SP1专属避坑指南)

本文详细介绍了在银河麒麟V10-SP1 x86_64环境下离线部署Docker的全流程,特别针对该版本特有的自定义目录安装失败问题提供深度分析和解决方案。通过实战验证的步骤和避坑指南,帮助用户在信创项目中顺利完成Milvus等应用的容器化部署。

weixin_30687051的博客 532

CS5212芯片实战:手把手教你设计DP转VGA转换电路(附完整原理图)

本文详细介绍了CS5212芯片在DP转VGA转换电路设计中的实战应用,包括芯片架构解析、核心电路设计要点、PCB布局与电磁兼容设计、调试技巧及进阶应用开发。通过完整的原理图和实用设计指南,帮助工程师快速掌握高可靠转换器的设计方法,特别适合需要国产化替代方案的场景。

weixin_30576827的博客 393

第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅

发光二极管(Light Emitting Diode,简称LED)是一种能够将电能转化为光能的固态的半导体器件。长脚为阳极短脚为阴极电流必须从长脚流入从短脚流出方可点亮LED##杜邦线杜邦线:是导线中的一种,杜邦线端部有两种接头形式:带针的一种称为公头,带孔的一种称为母头,如下图所示:说明:与电源相连接时,一般采用红色杜邦线,与地连接时采用黑色杜邦线。

qwsbcjendb的博客 1130

【ArcGIS Pro微课1000例】0023:ArcGIS Pro 3.0中打开GeoPackage数据库(.gpkg)

本文讲解ArcGIS Pro 3.0中打开GeoPackage数据库(.gpkg)的两种方法。

智慧空间实验室 4647

基于咸鱼最新九宫格图标验证码的语义增强模型识别

本文探讨了破解复杂验证码的技术思路,重点分析了某平台的九宫格验证码应对策略。作者提出通过图像语义抽取和增强技术来扩充数据集:先采集少量真实样本,利用形态学操作进行前增强生成变形图像,再通过叠加背景噪声进行后增强。同时强调真实数据集的重要性,建议采用真实+生成数据的混合训练方法。实验表明该方法可使模型准确率达到95%以上,但作者特别声明本文仅供技术研究,严禁用于非法用途。

码王吴彦祖的博客 602

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: 目前智能科学研究的十个基本问题
下一篇: GPU程序在GameByro中的使用
Goncely
博客等级 码龄25年 50粉丝 25原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值