[School_ĐHMT] 中点算法划清界线

内容
构建算法
阅读更多
1. 画直线的一般原则
2. DDA算法划清界线
3. 算法Breshenham画直线


构建算法
给 2 端点M1(X1, Y1), 和M2(X2, Y2). 通过M1式线, M2形式
\frac{x-x1}{y-y1} = \frac{x2-x1}{y2-y1} \\  \Leftrightarrow \left ( y2-y1 \right )x - \left ( x2-x1 \right )y + x2y1-x1y2 \\  \Leftrightarrow Ax + By + C = 0 \\  Voi \indent A = Dy, B = -Dx, C = x2y1-x1y2
Midpoint

在步骤K 1,我们来执行x被医疗计算根据整数x增加一个单位,并寻求. 称S, P分别与坐标点 (x_{k} + 1, y_{k}) , (x_{k} + 1, y_{k} + 1), M(x_{k} + 1, y_{k} + 0.5) SP的中点 (点中点), Q期待. 点 Q(x_{k} + 1, y) 该值依赖于比点M的点Q的位置. 如果Q小于M我们取点S (y = y_{k}), 采取相反的点P (y = y_{k} + 1).
设置 F(x, y) = Ax + By + C = 0 . 我有:
M1M2的点M <=> ˚F(M) = 0.
以上M1M2 M个点 <=> ˚F(M) < 0.
M点在于以下M1M2 <=> ˚F(M) > 0.
要确定M的位置,我们认为不断的符号 P_{k} = 2F(M) = 2A(x_{k} + 1) + 2B(y_{k} + 0.5) + 2C.
+/ 如果 P_{k} < 0 , M覆M1M2那么Q是M之下,即我们采取点S y = y_{k}
=> P_{k+1} = 2A(x_{k} + 1) + 2B(y_{k}) + 2C = 2A(x_{k}) + 2B(y_{k}) + 2C + 2A = P_{k} + 2Dy
+/ 如果 P_{k} \geq 0, 属于或M1M2那么Q位于对并购M下,我们得到P新闻 y = y_{k} + 1
\Rightarrow P_{k+1} = 2A(x_{k} + 1) + 2B(y_{k} + 1) + 2C \\  \indent \indent = 2A(x_{k}) + 2B(y_{k}) + 2C + 2A + 2B \\  \indent \indent = P_{k} + 2(Dy - Dx)
现在我们计算初始值P1.
P_{1} = 2A(x_{1} + 1) + 2B(y_{1} + 0.5) + 2C \\  \indent \indent = 2Ax_{1} + 2By_{1} + 2C + 2A + B\\   \indent \indent = 2(Ax + By + C) + 2Dy - Dx \\  \indent \indent = 2Dy - Dx \\  \indent \indent(Ax + By + C = 0)\\
我注意到中点算法具有相同的结果Breshenham算法计算来构建一个简单但更.

流程图算法, 代码说明完全一致 算法Breshenham