精华内容
下载资源
问答
  • opengl画圆多种方法

    2016-01-06 01:50:09
    基于opengl的各种画圆方法,相信看完之后会大有所悟。
  • CSS:多种方法画圆

    2020-03-31 14:33:54
    <div class="myDiv circle"></div> .myDiv { width: 100px;...方法一:border-radius .circle { background-color: seagreen; border-radius: 50%; } 方法二:clip-path .circle...
     <div class="myDiv circle"></div>
    
     .myDiv {
       width: 100px;
       height: 100px;
     }
    

    方法一:border-radius

    .circle {
      background-color: seagreen;
      border-radius: 50%;
    }
    

    方法二:clip-path

    .circle {
       background-color: seagreen;
       clip-path: circle();
     }
    

    方法三:svg background

    .circle{
      background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='50%25' cy='50%25' r='50%25' fill='seagreen'/%3E%3C/svg%3E");
    }
    

    🔧 url 解码工具:http://tool.chinaz.com/tools/urlencode.aspx

    data 类型的 url:
    • data:,<文本数据>
    • data:text/plain,<文本数据>
    • data:text/html,<HTML代码>
    • data:text/html;base64,<base64编码的HTML代码>
    • data:text/css,<CSS代码>
    • data:text/css;base64,<base64编码的CSS代码>
    • data:text/javascript,<Javascript代码>
    • data:text/javascript;base64,<base64编码的Javascript代码>
    • data:image/gif;base64,base64编码的gif图片数据
    • data:image/png;base64,base64编码的png图片数据
    • data:image/jpeg;base64,base64编码的jpeg图片数据
    • data:image/x-icon;base64,base64编码的icon图片数据

    data 格式的 url 最直接的好处是,这些 url 原本会引起一个新的网络访问,因为那里是一个网页的地址,现在不会有新的网络访问了,因为现在这里是网页的内容。这样做会减少服务器的负载,但同时也增加了当前网页的大小,而且不会缓存图片。对 “小” 数据特别有好处。

    方法四:radial-gradient

    .circle{
      background: radial-gradient(seagreen 70%, transparent 70%);
    }
    

    radial-gradient:径向渐变色。

    方法五:伪元素 + font

    .circle::after {     /* 用 ::before 也可以 */
        content: "●";
        color: seagreen;
        font-size: 8vw;  /* 字体实际大小 */
        line-height: 1;
    }
    

    方法六:mix-blend-mode

    .circle{
      background: seagreen;
    }
    .circle::after {
        content: "";
        display: block;
        width: 8vw;
        height: 8vw;
        mix-blend-mode: lighten;
        background: radial-gradient(#000 70%, #fff 70%);
      }
    

    mix-blend-mode 属性描述了元素的内容应该与元素的直系父元素的内容和元素的背景如何混合。

    方法六效果图:

    左上角为绿色,其它部分为黑色的原因:

    没有加 ::after 时,效果是这样的:

    ::after 的作用是画了一个黑色(background: radial-gradient(#000 70%, #fff 70%);控制颜色)的圆,由于 mix-blend-mode: lighten; 的混合方式,最终呈现这样的效果。

    展开全文
  • Bresenham算法画圆

    2020-04-21 19:20:34
    于是人们针对中点画圆法进行了多种改进,其中一种方式是将d的初始值由1.25 – R改成1 – R,考虑到圆的半径R总是大于2,因此这个修改不会影响d的初始值的符号,同时可以避免浮点运算。还有一种方法是将d的计算放大两...

        中点画圆法中,计算判别式d使用了浮点运算,影响了圆的生成效率。如果能将判别式规约到整数运算,则可以简化计算,提高效率。于是人们针对中点画圆法进行了多种改进,其中一种方式是将d的初始值由1.25 – R改成1 – R,考虑到圆的半径R总是大于2,因此这个修改不会影响d的初始值的符号,同时可以避免浮点运算。还有一种方法是将d的计算放大两倍,同时将初始值改成3 – 2R,这样避免了浮点运算,乘二运算也可以用移位快速代替,采用3 – 2R为初始值的改进算法,又称为Bresenham算法:

    void Bresenham_Circle(int xc, int yc, int r)
     {
        int x, y, d;
        x = 0;
         y = r;
        d = 3 - 2 * r;
        CirclePlot(xc, yc, x, y);
         while (x < y)
        {
           if (d < 0)
           {
                d = d + 4 * x + 6;
           }
            else
            {
               d = d + 4 * (x - y) + 10;
               y--;
          }
          x++;
          CirclePlot(xc, yc, x, y);
    	}
    }

    通过EasyX实现:

    #include <graphics.h>
    #include <conio.h>
    
    // 使用 Bresenham 画圆法
    void Circle_Bresenham(int x, int y, int r, int color)
    {
    	int tx = 0, ty = r, d = 3 - 2 * r;
    
    	while (tx <= ty)
    	{
    		// 利用圆的八分对称性画点
    		putpixel(x + tx, y + ty, color);
    		putpixel(x + tx, y - ty, color);
    		putpixel(x - tx, y + ty, color);
    		putpixel(x - tx, y - ty, color);
    		putpixel(x + ty, y + tx, color);
    		putpixel(x + ty, y - tx, color);
    		putpixel(x - ty, y + tx, color);
    		putpixel(x - ty, y - tx, color);
    
    		if (d < 0)		// 取上面的点
    			d += 4 * tx + 6;
    		else			// 取下面的点
    			d += 4 * (tx - ty) + 10, ty--;
    
    		tx++;
    	}
    }
    
    // 主函数
    int main()
    {
    	initgraph(640, 480);
    
    	// 测试画圆
    	Circle_Bresenham(320, 240, 200, RED);
    	Circle_Bresenham(320, 240, 101, RED);
    
    	// 按任意键退出
    	_getch();
    	closegraph();
    	return 0;
    }
    
    
    
    

    结果如下:

    参考资料:

    https://blog.csdn.net/MMogega/article/details/53055625?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1

    https://codebus.cn/yangw/a/bresenham-s-circle-algorithm

     

     

    展开全文
  • 反走样画圆

    2018-12-04 11:18:14
    Xftp 6支持多种编码,包括Unicode A,因此文件名将在单个窗口内以各种语言正确显示。 3、上下文菜单支持:支持Windows上下文菜单现在已集成到XFTP6中。右键单击文件资源管理器中的文件和文件夹,以访问Windows上...
  • 本发明属于工业机器人离线编程技术领域,具体涉及一种校正工业机器人离线编程在现场中的误差的方法。背景技术:机器人离线编程系统(Robot off-line-programming System)是当前机器人研究领域最活跃最前沿的研究方向...

    本发明属于工业机器人离线编程技术领域,具体涉及一种校正工业机器人离线编程在现场中的误差的方法。

    背景技术:

    机器人离线编程系统(Robot off-line-programming System)是当前机器人研究领域最活跃最前沿的研究方向。近年来,随着计算机技术、微电子技术及网络技术等的快速发展,机器人技术也得到了飞速发展。它集机械工程、电子工程、自动控制工程以及人工智能等多种学科的最新科研成果于一体,目前已有许多类型的机器人投入工程应用,创造了巨大的经济和社会效益。机器人是一个可编程的机械装置,其功能的灵活性和智能性很大程度上决定于机器人的编程能力。

    在理想条件下,即整个空间的六个面足够的平整和光滑的条件下,工业机器人离线编程仿真可以非常准确的安放工业机器人并进行工业机器人的路径规划。但是,现实中由于放置机器人的场地可能出现地面不平导致安装有误差,以及工业机器人本身尺寸存在误差等因素,所以,离线编程仿真出来的结果,放在现场会有一定的误差,从而导致仿真与实际不相符。现今对此现象进行校正的方法多数是人为校正,个别使用设备校正,校正设备价格上很高,方法上也很复杂。

    技术实现要素:

    为了解决现有误差校正方法存在的校正设备价格高且校正方法复杂的技术问题,本发明提供一种校正工业机器人离线编程在现场中的误差的方法。

    本发明解决技术问题所采取的技术方案如下:

    校正工业机器人离线编程在现场中的误差的方法,其包括以下步骤:

    (1)在计算机中进行工业机器人的离线编程仿真,确定两个工业相机的具体位置,并将其中一个工业相机的位置设定为原点,该相机与另一台工业相机连线方向为X轴的正向,工业相机光轴的方向为Y轴的正向,根据右手定则确定Z轴的正向,建立仿真新坐标系,在这个仿真新坐标系中,确定两个校正点的位置及其坐标值,以及确定在两个工业相机能够拍到的范围内,工业机器人上的固定不动的三个明显的特征点及其坐标值;

    (2)在现场中,根据步骤(1)仿真的位置安放两个工业相机,拍摄校正点,得出校正点的坐标和校正矩阵;

    (3)拍摄步骤(1)仿真中确定的机器人上的第一个特征点,并得出该特征点相对于工业相机的坐标;

    (4)拍摄步骤(1)仿真中确定的机器人上的第二个特征点,并得出该特征点相对于工业相机的坐标;

    (5)拍摄步骤(1)仿真中确定的机器人上的第三个特征点,并得出该特征点相对于工业相机的坐标;

    (6)利用坐标变换中的齐次变换,得到校正需要的相关数据;

    (7)将步骤(6)得到的相关数据传送给计算机,修正步骤(1)中工业机器人的离线编程仿真。

    步骤(1)中所述的确定两个工业相机的具体位置是指在离线编程软件中进行工业机器人的离线编程仿真时,在整个仿真的布局中,选取两个易于安放且能够拍摄到工业机器人的两个点安放此两个工业相机。

    步骤(1)中所述的确定两个校正点的位置是指在两个工业相机能够拍到的范围内,选取两个固定且明显的位置。

    步骤(2)中所述的得出校正点的坐标的方法是:校正点所在的坐标系与在仿真中校正点坐标系建立的方式相同,两个工业相机与目标点形成三角形关系,目标点求解是基于视差,由三角原理进行三维信息的获取,已知两个工业相机之间的位置关系,便可以获取公共视场内物体特征点的三维坐标;设空间点P的世界坐标为(XW,YW,ZW),在左侧工业相机的图像坐标为(u,v),在右侧工业相机的图像坐标为则有:

    即:

    其中,m1~m16、为工业相机的投影矩阵,由工业相机的内部参数得出,k1、k2、为畸变系数,θ为配比系数;在上述的公式中,由于在无畸变的理想条件下,m1~m16、已知,θ为0,上述方程可以用伪逆法求解,得出校正点的坐标值。

    步骤(2)中所述的得出校正矩阵的方法是:通过坐标变换中的齐次变换,可得公式:

    即:

    其中:

    为齐次变换阵;

    为目标点在现场中确定的坐标;

    为目标点在仿真中所确定的坐标;

    为X、Y、Z轴变化量的平移矩阵;

    为旋转矩阵;

    式中,f、q、j为三维坐标的欧拉角,绕x轴旋转为j,绕y轴旋转为q,绕z轴旋转为f;所测量的校正点为两个,因此,可得到八个公式,需要求解六个未知数,可以用伪逆法求解,得到齐次变换阵,即为校正矩阵。

    步骤(3)至步骤(5)中所述的得出特征点相对于工业相机的坐标是指三个特征点在现场新坐标系下的坐标,此现场新坐标系的建立方式与步骤(1)仿真中建立新坐标系的方式相同,是以工业机器人的离线编程仿真所选取的那个工业相机的位置为坐标系原点,以此相机与另一台工业相机连线方向为X轴的正向,工业相机光轴的方向为Y轴的正向,根据右手定则确定Z轴的正向,建立现场新坐标系。

    步骤(6)中所述校正需要的相关数据是指现场中新坐标系相对于仿真中新坐标系的滚动角、偏航角、俯仰角和原点平移的距离。

    步骤(6)中所述校正需要的相关数据的求解方法是将机器人的齐次变换矩阵乘以步骤(2)的校正矩阵,得出校正后的齐次变换矩阵,即为校正需要的相关数据。

    本发明的有益效果是:该方法使用工业相机,价格上相对便宜,方法上简单易行;利用工业相机,在特定的条件下,在现场中就可以得到离线编程仿真的误差,再把误差反馈给计算机离线编程软件,在软件中重新修改参数,使整个仿真更加精密和准确,避免了由于现场的自然条件所导致的工业机器人轨迹的不准确,避免了人工在现场中进行不准确的校正,同时也减少了校正的时间。

    附图说明

    图1为两个工业相机成像原理示意图。

    图2为单个工业相机拍摄特征点的原理示意图。

    图3为特征点在相平面上成像后坐标选取的方式示意图。

    图4为本发明校正工业机器人离线编程在现场中的误差的方法流程图。

    具体实施方式

    下面结合附图对本发明做进一步详细说明。

    如图1至图4所示,本发明校正工业机器人离线编程在现场中的误差的方法如下:

    首先,在工业机器人离线编程仿真中进行现场布局,安放好工业机器人。随后在整个布局中选取两个点安放工业相机,而这两个点需要是特殊的、方便的、易于安放的两个点,同时也要能够拍摄到工业机器人(例如,工位框架上的两个角)。随后,根据这两个工业相机建立新的坐标系:以其中一个工业相机的位置为坐标系原点,与另一台工业相机连线方向为X轴的正向,工业相机光轴的方向为Y轴的正向,随后根据右手定则确定Z轴的正向,形成的仿真新坐标系。

    然后,选取整个仿真区域中的较为明显的两个点(例如,安放工业机器人地面上的孔洞)作为校正点,通过仿真软件得出这两个校正点在仿真新坐标系下的坐标,通过在工业相机能够拍照的范围内,找到机器人上固定的明显的三个特征点(例如,工业机器人底座上相机能够拍摄到的三个点),得出这三个特征点在仿真新坐标系下的坐标。

    以上的过程是需要在工业机器人离线编程仿真软件中进行的准备工作。

    在现场中,根据仿真软件中的布局,布置整个现场。如图1所示,两个工业相机采用图1的方式进行安放,具体位置则按照仿真软件中的位置安放两个工业相机,并在现场中找到仿真中的两个校正点,由工业相机拍摄。

    如图1所示,两个工业相机视觉系统是基于视差,由三角原理进行三维信息的获取,已知两个工业相机之间的位置关系,便可以获取公共视场内物体的三维尺寸及空间特征点的三维坐标。

    图2为单个工业相机拍摄特征点的原理图,图3是特征点在相平面上成像后坐标选取的方式。按照图1安放两个工业相机,设空间点P的世界坐标为(XW,YW,ZW),在左侧工业相机的图像坐标为(u,v),在右侧工业相机的图像坐标为则有:

    即:

    其中,m1~m16、为工业相机的投影矩阵,由工业相机的内部参数得出,k1、k2、为畸变系数,θ为配比系数。在上述的公式中,由于m1~m16、已知,θ为0,即在无畸变的理想条件下,上述公式就成了4个方程,3个未知数,可以用伪逆法求解。运用此方法,可以得出校正点的实际坐标值。

    将上述得出的实际三维坐标与工业机器人离线仿真中的三维坐标作比较:如果在误差允许范围内,则无需校正;如果在误差允许的范围外,则需要校正。因为在安放工业相机的时候,会存在场地、安放等误差,从而导致安放的位置与仿真中的位置有差别。想要得出准确的坐标值,就必须需要校正。这里得出校正矩阵也是为了随后校正工业机器人上的三个特征点做准备。

    通过坐标变换中的齐次变换,可得公式

    即:

    其中:

    为齐次变换阵

    为目标点在现场中确定的坐标

    为目标点在仿真中所确定的坐标,

    为X、Y、Z轴变化量的平移矩阵,

    为旋转矩阵,

    公式中f、q、j为三维坐标的欧拉角,绕x轴旋转为j,绕y轴旋转为q,绕z轴旋转为f。所测量的校正点为两个,因此,可得到八个公式,需要求解六个未知数,可以用伪逆法求解。利用上述方法,可得到齐次变换阵即为校正矩阵。

    拍摄仿真中固定在机器人上的第一个特征点,特征点图像坐标在两个工业相机上分别为pleft=(Xleft,Yleft),pright=(Xright,Yright)。

    两个工业相机的图像在同一个平面上,第一个特征点的图像坐标Y坐标相同,即Yleft=Yright=Y,工业相机的焦距为f,则由三角几何关系得到:

    则视差为:Disparity=Xleft-Xright。式中,B为基线距,即两个相机的投影中心连线的距离。由此可计算第一个特征点在仿真坐标系下的三维坐标为:

    依照上述的方法,依次拍照固定在机器人上的第二个特征点和第三个特征点,并求出其坐标。

    随后,通过下面的算法得出现场坐标系相对于仿真坐标系的滚动角、偏航角、俯仰角,和原点平移的距离,再将旋转矩阵和平移矩阵分别与校正矩阵相乘,得出校正后所需要的数据。该算法为:

    即:

    其中:

    为齐次变换阵

    为目标点在现场中确定的坐标

    为目标点在仿真中所确定的坐标,

    为X、Y、Z轴变化量的平移矩阵,

    为旋转矩阵,

    式中,f、q、j为三维坐标的欧拉角,绕x轴旋转为j,绕y轴旋转为q,绕z轴旋转为f;ΔX、ΔY、ΔZ分别为平移矩阵中X方向的增量、Y方向的增量、Z方向的增量。所测量的固定点为三个,因此,可得到九个公式,需要求解九个未知数,可以用伪逆法求解。

    最后,把相关数据传送给计算机,修正离线编程仿真。

    展开全文
  • html5 canvas 画布画圆

    2014-05-18 23:28:00
    什么是 Canvas? ... ...canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 浏览器支持 Internet Explorer 9+, Firefox, Opera, Chrome 以及 Safari 支持 <canvas> 标签...

    什么是 Canvas?

    HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。

    画布是一个矩形区域,您可以控制其每一像素。

    canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

    浏览器支持

    Internet Explorer 9+, Firefox, Opera, Chrome 以及 Safari 支持 <canvas> 标签。

    ps:Internet Explorer 8 以及更早的版本不支持 <canvas> 标签。

    理解坐标

    在canvas中,画布的 X 和 Y 坐标用于在画布上对绘画进行定位,画布的左上角为坐标原点(0,0)。

    Canvas 实例:理解坐标

    在canvas中的坐标如下:

     

    在Canvas中用来绘制圆形的javascript api函数为arc(x,y,radius,startAngle,endAngle,antiClockwise(Boolean));

        参数说明:

                   x,y是圆心的坐标,

                  radius是圆的半径,

                 startAngle 圆的起始角度,

                 endAngle圆的结束角度,

                antiClockwise 圆绘制的顺序,默认为顺时针,为true时是逆时针,这只是是内部绘制的顺序不一样而已,显示的效果是一样的.

               如绘制一个完整的圆形时:canvas.arc(50,50,25,0,2*Math.PI);

    我们可以根据某个值来动态绘制圆弧的长度,只要把圆的结束角度设置为动态的即可。如根据某个百分比数据来绘制一个统计某个数据的圆弧,假设是满意度为50%,那么圆的结束角度为0.5*2*Math.PI.这样既可画出一个半圆了。

     

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>canvas绘制圆形</title>
    <style type="text/css">
    *{margin:0; padding:0;}
    #canvas-box{width:980px; margin:50px auto;}
    #percent{color:#C00;}
    #canvas{border:1px solid #900; margin:0 auto 0 auto;}
    </style>
    </head>

    <body>
    <div id='canvas-box'>
        <p></p><b id="percent">50</b>%</p>
        <canvas id="canvas" width="400" height="400" ></canvas>
    </div>
    <script type="text/javascript">
     var p=document.getElementById('percent').innerHTML;
     p=p/100;
     var canvas=document.getElementById('canvas').getContext('2d');
     canvas.beginPath();
     canvas.arc(200,200,100,0,2*Math.PI);
     canvas.strokeStyle='#f00';
     canvas.lineWidth=2;
     canvas.stroke();
     canvas.closePath();
     canvas.beginPath();
     canvas.arc(50,50,50,0,p*2*Math.PI);
     canvas.strokeStyle='#00f';
     canvas.lineWidth=2;
     canvas.stroke();
     canvas.closePath();
    </script>
    </body>
    </html>

    转载于:https://www.cnblogs.com/gb2013-shangduoduo/p/3735967.html

    展开全文
  • android 自定义控件 圆形图片

    千次阅读 2015-08-14 22:52:43
    不过自定义的控件一般也都是从标准控件继承来的,或者是多种控件组合,或者是对标准控件的属性进行改变而得到的自己满意的控件. 自定义控件可能会有很多种方法,这里只介绍圆形图片的控件   获取圆形图片...
  • 圆中点Bresenham算法

    2017-10-28 17:59:43
    于是人们针对中点画圆法进行了多种改进,其中一种方式是将d的初始值由1.25 – R改成1 – R,考虑到圆的半径R总是大于2,因此这个修改不会影响d的初始值的符号,同时可以避免浮点运算。还有一种方法是将d的计算放大两...
  • Delphi TBitmap Scanline

    2013-05-06 21:35:00
    使用Dephi进行图像处理可以有多种方法,最常用的应该算是TBitmap,它提供方便的图像存取能力,结合Canvas可进行画线、画圆、图像拷贝等操作。不过在进行大量的图像处理操作时,为了获得更高的速度,我们希望能够直接...
  • 使用Dephi进行图像处理可以有多种方法,最常用的应该算是TBitmap,它提供方便的图像存取能力,结合Canvas可进行画线、画圆、图像拷贝等操作。不过在进行大量的图像处理操作时,为了获得更高的速度,我们希望能够直接...
  • 取得TBitMap图像缓冲区

    2004-10-22 16:33:00
    使用Dephi进行图像处理可以有多种方法,最常用的应该算是TBitmap,它提供方便的图像存取能力,结合Canvas可进行画线、画圆、图像拷贝等操作。不过在进行大量的图像处理操作时,为了获得更高的速度,我们希望能够直接...
  • a.) 提供特有的89种画圆方法,可动态拖曳有效取得结果(demo dwg) b.) 提供快速且弹性的矩形绘图 (BOX) c) 提供结合圆角及修齐功能的快速圆角指令 d) MOFFSET提供多重平行偏位线的快速绘制 e) 提供立体图面平行...
  • 范例8-11-1 多种色调处理练习 262 范例8-12-1 圆形转矩形处理练习 266 范例8-13-1 LogPolar极座标转换处理 267 第9章 强大相片类处理 270 范例9-1-1 影像修复功能处理练习 270 范例9-2-1 影像减色/脱色/降灰阶处理...
  • 11.2.10 画圆和数据集示意图 177 11.2.11 学习具体的产品 178 11.2.12 把WHERE子句看做“超级变形虫” 178 11.2.13 使用新闻组、博客和因特网 178 11.3 不要在SQL中使用BIT或BOOLEAN标记 179 11.3.1 ...
  • 同时还可进行区域人流分析,人员密度分析,停留时间、人员流量统计,特定人员监控,区域报警和人员轨迹查看等多种应用的二次开发。 室内定位系统可分为基站、被定位终端、服务器、数据库、客户端等五个部分,分别...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

多种画圆方法