当前位置:首页 » 操作系统 » 算法画实心圆

算法画实心圆

发布时间: 2023-03-31 16:43:24

Ⅰ lcd240128的如何画出一个圆的形状

在 LCD 上 直接用像素点画圆
1 先初始化LCD
在LCD上直接操作像素点,没多少效率,实际测试中对字符界面也是可以的,直接上代码:

2 怎么计算像素点
根据方程 :(x-a)(x-a) + (y-b) (y-b) = r^2可以写出最简单的算法

画出第一个圆,仔细看这个圆,在最左边有很多像素点“丢失”,这是因为从最左边开始,在x+1后,y增幅较大,相邻的两个像素点纵坐标差值较大;而在靠近最高点处,Y的增幅又变小,导致看起来两边稀,上面密的效果。

.a…


a…

于是想到了对y轴进行像素补偿,在 y_now - y_last > 1 的时候,补偿y,防止y跳变

补偿之后的圆长这个样子,
.a…
.a…
.a…
a…
看着好像还是有点僵硬,干脆补偿的时候从中间截断,前半部分用上一个像素点的x坐标,后半段才用下一个点的x坐标

像这样
.a… 一半用新的横坐标
.a…
a…一半用旧的横坐标
a…

把三个圆的效果和微软自带的的画图工具画的圆作对比:

优点:和微软的比起来,左右的像素点看起来更平滑
缺点:上下的像素点还可以待进一步优化

3 代码如下:
有空了我会把图贴上

文章知识点与官方知识档案匹配
C技能树首页概览
108396 人正在系统学习中
打开CSDN APP,看更多技术内容

【玩转嵌入式屏幕显示】(三)TFT-LCD屏幕打点 + 画线 + 画矩形 + 画圆...
0. 引言TFT-LCD屏幕的画直线、画斜线、画矩形、画圆等算法都是基于打点函数的,所以此程序可以移植到任何屏幕的基本驱动程序之上。1. 打点函数 —— 底层函数(移植需修改)打点函数其实就是屏幕显存(液晶控制器显存)中某一个点的颜色...
画圆方法小结_i_water的博客
1、在LCD屏幕上用颜色画一个空心圆 #include <math.h>#define pi 3.1415926#define N 360void draw_Circle(intm,intn,intr,intcolor) {inti;intx,y;for(i=0;i<N;i++) {x=m+r*cos(2.0*pi*i/N);y= n+r*sin(2.0...
LCD 画线方法及c语言实现
LCD 画线方法及C语言实现,点阵LCD画直线的多种方法
计算机图形学---基于整个屏幕像素点的直接画圆法
基于整个屏幕像素点的直接画圆法 用来记录一个基于整个屏幕像素点的直接画圆法! 算法简介 设直线的两个端点是A(Xa,Ya)和B(Xb,Yb),则我们仅需考虑x=Xa,x=Xb,y=Ya,y=Yb四条线围成的矩形区域内的每一个像素点的情况,设P(X0,Y0);是该区域的任意像素点,则可以通过判断P到直线AB之间的距离来决定P点是否被点亮。 点到直线的距离公式 d=∣Ax0+By0+CA2+b2∣ ...
继续访问

我的5110画图库--Nokia 5110液晶屏实现画点、画线、画矩形、画圆...
#define LCD_Y 48 //液晶屏纵坐标高度 #define LCD_COLUMN LCD_Y / 8 //液晶屏行高度 #define LCD_AREA LCD_X * LCD_Y //液晶屏面积 #define LCD_AREA_BYTE LCD_COLUMN * LCD_ROW //液晶屏字节容量 ...
(学习笔记)stm32f4在液晶上画圆及填充圆的几种方法
先说下画圆,根据圆的对称性将圆8等分,求出其中一份,其他可以通过坐标变换得到。得到过程可以网络中点画圆法。 程序: void LCD_Draw_Circle(uint16_t Xpos,uint16_t Ypos,uint16_t Radius) { int16_t mx=Xpos,my=Ypos,x=0,y=Radius; int16_t d=1-Radius; while(y>x)
继续访问
LCD画线画圆
LCD画线画圆
mpy lcd 绘制圆
1.实心 def drawCirc_fill(tft,x,y,r,pen): ox =r oy =0 err = -r while ox>=oy: last_oy = oy err +=oy oy+=1 err+=oy tft.hline(x-ox,y+last_oy,ox*2+1,pen) ##3 if last_oy != 0: tft.hli
继续访问
lcd画圆算法
#include "math.h" #define PI 3.14159265 #define LCDWIDTH 800 #define LCDHEIGHT 480 //x,y:坐标 //color:颜色 //angle:角度 //radius:半径 void LCD_DrawPoint_Rotate(u16 x,u16 y,u16 color, int angle,int radius) ...
继续访问
LCD编程显示像素点
一 LCD屏幕 本次学习使用的LCD屏是一块 800*480 分辨率的全彩屏幕。 分辨率的意思是:每行有800个像素点,一共有480行。 全彩的意思是:像素点显示的颜色是由RGB红绿蓝三种单颜色组成,其次还有阿尔法粒子透明度A。也就是ARGB。 LCD显示屏在工作中需要显卡,显卡中要有显存。而本次学习的开发板没有独立显卡,所以需要分配虚拟显存。而每个像素点在显存中占据4个字节的空间,也就是ARGB...
继续访问
【LCD画圆】算法系列之十一:圆生成算法
算法系列之十一:圆生成算法 原文:http://blog.csdn.net/orbit/article/details/7253285 分类: 算法系列 2012-02-12 21:45 6828人阅读 评论(21) 收藏 举报 输入您的搜索字词 提交搜索表单 在平面解析几何中,圆的方程可以描述为(x – x...
继续访问
热门推荐 lcd彩屏画点画线和画圆 嵌入式开发
在lcd显示屏上的指定点画出直线,点,圆 本文源于 海之遥的博客 http://blog.sina.com.cn/atpx1989 亲测可行,觉得很有意义,拿过来以备以后用 //-----------画点函数。参数:坐标,颜色------------------- void draw_point(int x, int y, int clor) { fb[
继续访问
STM32学习笔记-LCD画直线,画圆
STM32学习笔记-LCD画直线,画圆 1.画直线 如果在两点(a,b)(c,d)之间画直线,首先考虑c>a,d>b,且k<1的情况,其他情况根据对称关系就能推导出来了。 为了使问题简单化,先将这两点进行平移,将(a,b)平移到原点,那么(c,d)变换后的坐标就是(e,f),其中e=c-a,f=d-b,斜率k=f/e; 假设在LCD上我们取的第i个像素点的坐标是(i,j),那么第...
继续访问

C语言 程序 画圆、画圆和y=x^2
绘制圆 在屏幕上用“*”画一个空心的圆 *问题分析与算法设计 打印圆可利用图形的左右对称性。根据圆的方程: R*R=X*X+Y*Y 可以算出圆上每一点行和列的对应关系。 程序思想和之前的两个程序一样。整个圆向右平移R个单位,因为长宽比不一样所以还要有个系数,下面是我写的程序 #include #include #define R 10 #defi
继续访问
图形学 画圆算法(Bresenham + 中点)
圆的特性 我们的圆中,具有对称的特性,在xy坐标轴中具有八对称的特性。 我们只需要画出一个点 按照八对称性,我们就能获得八个点,所以我们只需要画一个八分之一圆就好了。我们就选择最利于我们思考的第一象限0~Math.sqrt(1)部分,就是上边橘点位置的区域。 中点画圆 我们通过中点到圆的距离(通过符号判定),我们就能选择相应的点。我们每次的选择中点时,增量都是有规律的。 我们通过对直...
继续访问
S3C2440裸机------LCD_画点线圆
目录 1.画点 2.画线、圆 1.画点 我们首先实现画点的函数, #include "lcd.h" /* 实现画点 */ /* 获得LCD参数 */ static unsigned int fb_base; static int xres, yres, bpp; void fb_get_lcd_params(void) { get_lcd_params(&fb_base, &xres, &yres, &bpp); } /* rgb: 0x00RRGGB
继续访问
记录STM32F1控制LCD绘制圆形
注:代码参考与正点原子教程 //绘制一个圆,传入圆心坐标和半径 void gui_dispCircle(uint32_t x0,uint32_t y0,uint32_t r) { int a,b; int di; a=0; b=r;
LCD编程_画点线圆
上篇博客中进行了lcd的简单测试,这篇博客将进行更加复杂的测试——画点、画线、画圆。画线和画圆是在画点的基础上实现的,因此本篇博客重点实现画点操作。 先抛出这样的一个问题,已知: (x,y)的坐标; bpp; xres; yres; 那么,如何在framebuffer中获得像素的地址呢? (x,y)像素的起始地址 = fb_base +(xres * bpp /8...
继续访问
基于像素点的图形显示算法(Bresenham圆形个人理解)
目录 目的 几何原理 代码优化 参考区域选取 计算量 填充方式 程序源码 目的 本实验基于STM32F103RC+TFTLCD屏,旨在于在LCD屏上显示一个实心圆形,然而众所周知,对于屏幕而言,我们只能操作各个像素点,因此,选择出最接近标准圆形的像素点就成了本次实验的主要目的,最终得到的圆形大概应该长这样 看起来很不规则,但是这里只是半径为5个像素点的圆形,因此放大来...
继续访问

最新发布 TFT-LCD显示直线、矩形、圆形
usR、usG、usB变量为16位,但首先读取出的RED数据占5位,且在高字节,GREEN数据占6位,同样在高字节,BLUE数据占5位,在高字节,所以组合时要通过移位,将RED数据放在usColor的高5位,GREEN数据占中间的6位,剩下的5位放BLUE数据,这样就组合成了RGB565的数据格式。如果是填充矩形,则调用填充颜色函数按照矩形的宽和高填充颜色就行,如果是不填充矩形,则画四条直线。之前显示ASCII字符、中文和图片都是使用的取模软件,这次直接用代码驱动显示直线、矩形和圆形。
继续访问

用C语言字符画圆
用C语言画圆,这是一是算法的问题,我们知道,程序是由数据结构加算法组成的,研究这类东西,其实也是研究算法的问题,是比较有意思的。圆心为0的时候,圆的公式公式:那我们要如何写代码呢?示例代...
继续访问

【opencv学习笔记.1】操作像素画圆
任何图像处理算法,都是从操作每个像素开始的,刚接触Opencv,写的第一个小程序:分别用动态地址和指针操作像素画圆。 用的是VS2015搭opencv3.0 一.首先是用动态地址计算来操作像素,这种方法简洁明了,符合大家对像素的直观认识
lcd画圆

Ⅱ MATLAB作图时,如何把标志数据点的形状做成实心的

代码如下:

>>x = -pi:pi/10:pi;

>>y = tan(sin(x)) - sin(tan(x));

>> figure

plot(x,y,'--bs',...

'LineWidth',2,...

'MarkerSize',10,...

'MarkerFaceColor','b')

>> grid on

扩展资衡早裂料:

注意事项

一、绘制实心圆:

pha=0:pi/20:2*pi;%角度[0,2*pi]

R=2;%半咐闭径睁仿

x=R*cos(alpha);

y=R*sin(alpha);

plot(x,y,'-')

axis equal

fill(x,y,'r');%用红色填充

二、绘制实心圆点:

plot(1:8,'ro','MarkerFaceColor','r');

Ⅲ 怎样用javascript画个实心圆和计算器

1、JS画圆

<script type="text/javascript">
//功能:画实心圆
//参数:圆心坐标,半径,精确度,背景颜色
//主要用到了中学时的圆的一些特征公式呵呵

function SolidCircle(centreX, centreY, radius, precision, color){
var cx = Math.abs(parseInt(centreX));
var cy = Math.abs(parseInt(centreY));
var r = parseInt(radius<2 ? 60 : radius);
var p = parseInt(precision<1 ? 1 : precision);
var c = color;

var y;
for(var x=cx-r; x<=cx+r; x+=p){
y = cy - Math.sqrt(Math.pow(r, 2) - Math.pow(cx - x, 2));
document.write('<img style="background:'+c+'; border:1 solid '+c+'; width:'+p+'; height:'+parseInt(2*Math.sqrt(Math.pow(r, 2) - Math.pow(cx - x, 2)))+'; position:absolute; top:'+parseInt(y)+'; left:'+parseInt(x)+';">');
}

//alert("一共有 " + document.all.length + " 个 <img>");
}
SolidCircle(450, 100, 100, 1, "green");
</script>

2、计算器的连加原理其实和连续计算的原理是一样的,所以,在JS里面一定要定义一个全局变量,不论是加减乘除都调用这个变量即可。下面是一段完整的计算器代码,你可以参考一下,也可以解决你的问题。

<FORM name="Keypad" action="">
<TABLE>
<B>
<TABLE border=2 width=50 height=60 cellpadding=1 cellspacing=5>
<TR>
<TD colspan=3 align=middle>
<input name="ReadOut" type="Text" size=24 value="0" width=100%>
</TD>
<TD
</TD>
<TD>
<input name="btnClear" type="Button" value=" C " onclick="Clear()">
</TD>
<TD><input name="btnClearEntry" type="Button" value=" CE " onclick="ClearEntry()">
</TD>
<睁举带/TR>
<TR>
<TD>
<input name="btnSeven" type="Button" value=" 7 " onclick="NumPressed(7)">
</TD>
<TD>
<input name="btnEight" type="Button" value=" 8 " onclick="NumPressed(8)">
</TD>
<TD>
<input name="btnNine" type="Button" value=" 9 " onclick="NumPressed(9)">
</TD>
<答脊TD>
</TD>
<TD>
<input name="btnNeg" type="Button" value=" +/- " onclick="Neg()">
</TD>
<TD>
<input name="btnPercent" type="Button" value=" % " onclick="Percent()">
</TD>
</TR>
<TR>
<TD>
<input name="btnFour" type="Button" value=" 4 " onclick="NumPressed(4)">
</TD>
<TD>
<input name="btnFive" type="Button" value=" 5 " onclick="NumPressed(5)">
</TD>
<TD>悉芦
<input name="btnSix" type="Button" value=" 6 " onclick="NumPressed(6)">
</TD>
<TD>
</TD>
<TD align=middle><input name="btnPlus" type="Button" value=" + " onclick="Operation('+')">
</TD>
<TD align=middle><input name="btnMinus" type="Button" value=" - " onclick="Operation('-')">
</TD>
</TR>
<TR>
<TD>
<input name="btnOne" type="Button" value=" 1 " onclick="NumPressed(1)">
</TD>
<TD>
<input name="btnTwo" type="Button" value=" 2 " onclick="NumPressed(2)">
</TD>
<TD>
<input name="btnThree" type="Button" value=" 3 " onclick="NumPressed(3)">
</TD>
<TD>
</TD>
<TD align=middle><input name="btnMultiply" type="Button" value=" * " onclick="Operation('*')">
</TD>
<TD align=middle><input name="btnDivide" type="Button" value=" / " onclick="Operation('/')">
</TD>
</TR>
<TR>
<TD>
<input name="btnZero" type="Button" value=" 0 " onclick="NumPressed(0)">
</TD>
<TD>
<input name="btnDecimal" type="Button" value=" . " onclick="Decimal()">
</TD>
<TD colspan=3>
</TD>
<TD>
<input name="btnEquals" type="Button" value=" = " onclick="Operation('=')">
</TD>
</TR>
</TABLE>
</TABLE>
</B>
</FORM>
</CENTER>
<font face="Verdana, Arial, Helvetica" size=2>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
var FKeyPad = document.Keypad;
var Accum = 0;
var FlagNewNum = false;
var PendingOp = "";
function NumPressed (Num) {
if (FlagNewNum) {
FKeyPad.ReadOut.value = Num;
FlagNewNum = false;
}
else {
if (FKeyPad.ReadOut.value == "0")
FKeyPad.ReadOut.value = Num;
else
FKeyPad.ReadOut.value += Num;
}
}
function Operation (Op) {
var Readout = FKeyPad.ReadOut.value;
if (FlagNewNum && PendingOp != "=");
else
{
FlagNewNum = true;
if ( '+' == PendingOp )
Accum += parseFloat(Readout);
else if ( '-' == PendingOp )
Accum -= parseFloat(Readout);
else if ( '/' == PendingOp )
Accum /= parseFloat(Readout);
else if ( '*' == PendingOp )
Accum *= parseFloat(Readout);
else
Accum = parseFloat(Readout);
FKeyPad.ReadOut.value = Accum;
PendingOp = Op;
}
}
function Decimal () {
var curReadOut = FKeyPad.ReadOut.value;
if (FlagNewNum) {
curReadOut = "0.";
FlagNewNum = false;
}
else
{
if (curReadOut.indexOf(".") == -1)
curReadOut += ".";
}
FKeyPad.ReadOut.value = curReadOut;
}
function ClearEntry () {
FKeyPad.ReadOut.value = "0";
FlagNewNum = true;
}
function Clear () {
Accum = 0;
PendingOp = "";
ClearEntry();
}
function Neg () {
FKeyPad.ReadOut.value = parseFloat(FKeyPad.ReadOut.value) * -1;
}
function Percent () {
FKeyPad.ReadOut.value = (parseFloat(FKeyPad.ReadOut.value) / 100) * parseFloat(Accum);
}
// End -->
</SCRIPT>

补充哦,怕在网络hi上给你的留言你看不到呵呵
----------------------------------------
那个圆也是没有问题的,因为给学生上课讲过这个算法,它有些类似于微积分中圆的面积求法,其实是将圆沿X轴进行细分,细分的精度由precision决定,所以,当你在这段代码中将精确降低的话,圆的边界就很粗糙,把细分后的每一块把它看成一个图形,这样累加起来,不就组成一个实习圆了嘛(截止到这儿,讲的是算法问题)。然后呢,代码的精髓在于那个For循环,(var x=cx-r; x<=cx+r; x+=p)表示变量是从圆的最左边开始的[因为圆心cx-半径r得到最左边,下同],到最右边结束[cx+r],而每次增加多少呢,是由精度控制的[x+=p],然后循环体内的代码的精髓是图片的宽度和高度那块儿,宽度当然就等于精度了,高度的那个公式y = sqrt(r^2 - x^2)是画圆的必备公式,你应该明白吧。好了,到此为止,这段代码的原理和实现我都说到这儿了,希望你能明白。

Ⅳ 在cad 中,如何画出一个实心圆点

1、打开CAD。


2、打开CAD后,在命令栏中输入DO命令。


3、输入Do后,指定圆环的内径输入0。


4、然后再指定圆环的外径中输入5,也就是需要多大的圆点就输入多少的数据。


5、确定圆环外禅汪径后贺瞎仔,点击一神漏下就可以画一个点。

Ⅳ matlab中如何画实心圆 ,急求,准确代码!matlab

t = linspace(0,2*pi,100);
x = 10 * cos(t); % x 轴薯灶毁数据
y = 10 * sin(t); % y 轴数据辩斗
plot(x,y) % 画圆
fill(x,y,'r') % 填充红色数备
axis square

Ⅵ 用c语言画一个实心圆

可以试试opencv,开源念穗库,老版本(应该2以下)都是并穗c代码,要绘图涉及和系统资源相关的代码用纯c写很麻烦的绝高卜。

Ⅶ 怎么用matlab画圆

大致思路利用圆的参数方程去画圆。

1、进入命令行窗口(Command Window)。

扩租毕展资料

当我们需要用画图对不同类别的数据点进行连线的时候,可以设置以下属性来区分不同类别的点和相应的直线:

(1)LineStyle:线形

(2)MarkerSymbol:点形

(3)Color:颜色

例如:

plot(x,y,'m','Linewidth',1)

其中“m”为紫红色,“1”线宽为1

plot(x,y,'-.or','MarkerFaceColor','g')

其中线形为点横线,数据点形状为圆圈,线条和数据点边缘的颜色都是红色,数据点吵型笑的填充颜色为绿色。

Ⅷ cad绘制实心圆有几种方法,分别是什么

首先,打开CAD,我们先画一个圆,如图所示,点击左侧工具栏中的“圆”命令按钮。

02
然后在页面中,根据要求画一个圆。画燃猛完之后,点击菜单栏“绘图”,下拉菜单中选择“图案填充”。

03
出现“图案填充”选项框,点击其中的“添加拾取点”,然后把圆选中(如图所示,选中之后圆变成虚线),点击确认后回到图案填充选项框。

或者
1.首先我们打开CAD软件

2.根据我们的尺度的要求,我嫩来皮喊桥绘制一条线段。

3.我们输入【pl】这个命令,绘制我们曲线的多线段,

4.然后输入【mi】命令,将我们绘制一半的圆沿着刚才画的线段镜像,并且将中间的线段删除。

5.输入【pe】的命令,将我们的两个半圆拼合起来。

6.再用【pe-w】这个命令给合并后的多线段一个宽度,输入我们的线宽值。
以上步骤操作完成,我们就绘制渗耐好一个有线宽的实心圆环了,所以我们一定要多个命令配合使用,理清楚逻辑思维。

Ⅸ 在VC++中如何画出一个圆

VC++画圆形可以使用API函数:Ellipse(int x1, int y1, int x2, int y2);
其画圆的原理是矩形的内切圆,四个参数中的前两个是矩形左上角坐标,后两个是矩形右下角坐标。VC++画图形前得先有一块画布DC即设备上下文。下面个例子:

void CrrDlg::PaintCircle() //画实心圆函数{ CDC *pDC = this->GetDC(); //获取DC CBrush brush,*oldbrush; //画刷 //通过定时器中num递增,实现红色圆形与绿色圆形交替出现,即闪灯现象 if (num%2){ //num为定时器计数参数,其为偶数时画红色圆形 brush.CreateSolidBrush(RGB(255,0,0)); } else{ //num为奇数时,画绿色圆形樱掘 brush.CreateSolidBrush(RGB(0,255,0)); } oldbrush=pDC->SelectObject(&brush); pDC->Ellipse(10,10,100,100); pDC->Ellipse(110,10,200,100); pDC->SelectObject(oldbrush); ReleaseDC(pDC);} void CrrDlg::OnTimer(UINT_PTR nIDEvent) //销颂粗定时器{ num++; PaintCircle(); CDialogEx::OnTimer(nIDEvent);} 画空心圆环需要使用画笔CPen,亏镇画法一样。

Ⅹ C# 画个实心圆

用Brush填充,不用陪局岩Pen

System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);//画刷芦御
formGraphics.FillEllipse(myBrush, new Rectangle(0, 0, 100, 200));//腊数画实心椭圆

热点内容
安卓手机怎么设定背景墙 发布:2025-05-19 18:29:40 浏览:1001
androidstudio断点调试 发布:2025-05-19 18:20:23 浏览:766
abaqus如何配置证书 发布:2025-05-19 18:19:38 浏览:583
美食的密码是多少 发布:2025-05-19 18:18:58 浏览:72
买合资车选哪个品牌好配置高 发布:2025-05-19 18:01:51 浏览:49
pythonc回调 发布:2025-05-19 17:55:50 浏览:268
苹果如何把通讯录转移到安卓手机 发布:2025-05-19 17:49:13 浏览:255
开机设密码源码 发布:2025-05-19 17:47:20 浏览:885
死锁检测算法 发布:2025-05-19 17:45:17 浏览:109
sql查询列 发布:2025-05-19 17:38:16 浏览:279