zoukankan      html  css  js  c++  java
  • 计算机绘图原理 —— 直线的绘制

    任何复杂的几何图形都是由基本图形元素(点、线等)组成的,直线等基本图形生成的关键是如何利用算法及数学公式描述并在图形设备上显示出来。

    1. 直线的绘制

    平面直线由两个端点唯一确定,绘制直线函数的一般表达式为:

    • line(y1, x1, y2, x2, <属性参数>)

    在图形设备上绘制直线,实质上就是按照直线的延伸方向y2y1x2x1)不断地生成光点所连成的轨迹或绘出微小的线段,光点的间距及绘图笔移动的距离称为步长。那么,直线的绘制算法有许多种,下面主要介绍两种,即逐点比较法DDA 算法。

    • 逐点比较法

      位置偏差的判别方法:图中OA是要生成的直线的理论位置,起点是O,终点是A,设当前实际画出的点位置为X轴上的一点1,斜率等于零且小于α,可以判定下一步进的方向为Y的正方向。设前进一个步距的点为B,OB的斜率为β,如果β>α,则有tanβ>tanα,这说明OB线位于OA线的上面,判定下一次步进应在X轴方向;如果β<α,那么tanβ&l;tanα,说明OB线位于OA线的下面,下一次步进应沿Y轴方向步进。

      tanβtanα=yBxByAxA=xAyBxByAxBxA


      这里写图片描述

      当直线位于第一象限时,xA,xB>0,因而可以用下式判别 B 点的位
      置偏差,Δ=xAyBxByA
      Δ0,在 X 轴方向绘制一个单位步长,xi+1=xi+I
      Δ<0,在 Y 轴方向绘制一个单位步长,yi+1=yi+I

    • DDA 算法

      DDA 算法根据直线的微分方程来绘制直线,设直线的起始坐标 xs,ys,终点坐标为 xe,ye,则 Δx=xexs,Δy=yeys,则要绘制的直线的微分分方程为 Δx=dxdt,Δy=dydt,令 Δt=max(Δx,Δy),取时间步长为 1Δt,可得上述微分方程的递推公式:

    xi+1=xi+ΔxΔtyi+1=yi+ΔyΔt

  • 相关阅读:
    CI登录验证
    兼容所有浏览器的JS动态显示当前日期时间
    Active Record 数据库模式-增删改查操作
    数据库链接的增操作举例
    CI框架获取post和get参数 CodeIgniter
    PHP日期操作类代码-农历-阳历转换、闰年、计算天数等
    根据两点间的经纬度计算距离
    Session 类
    mysql 查询优化规则
    php获取文件夹下面的文件列表和文件夹列表
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423272.html
Copyright © 2011-2022 走看看