p1 = CPoint(PositionS.x + 100, PositionS.y); p2 = CPoint(PositionS.x + 52, PositionS.y); p3 = CPoint(PositionS.x + 39, PositionS.y); p4 = CPoint(PositionS.x, PositionS.y); p5 = CPoint(PositionS.x + 47, PositionS.y - 15); p6 = CPoint(PositionS.x + 32, PositionS.y - 41); if (Status == 0) { p7 = CPoint(PositionS.x + 40, PositionS.y); p8 = CPoint(PositionS.x + 60, PositionS.y); } else if (Status == 1) { p7 = CPoint(PositionS.x + 51, PositionS.y - 5); p8 = CPoint(PositionS.x + 42, PositionS.y - 21); }
时间: 2024-03-11 10:46:02 浏览: 63
这段代码定义了七个点的坐标,它们分别是p1、p2、p3、p4、p5、p6、p7和p8,它们的具体坐标值是通过PositionS.x和PositionS.y计算得出的。其中,如果Status为0,则p7的坐标为(PositionS.x + 40, PositionS.y),p8的坐标为(PositionS.x + 60, PositionS.y);如果Status为1,则p7的坐标为(PositionS.x + 51, PositionS.y - 5),p8的坐标为(PositionS.x + 42, PositionS.y - 21)。
相关问题
switch (Form) { case 1: p1 = CPoint(PositionS.x, PositionS.y); p2 = CPoint(PositionS.x + 48, PositionS.y); p3 = CPoint(PositionS.x + 61, PositionS.y); p4 = CPoint(PositionS.x + 100, PositionS.y); //p5 = CPoint(PositionS.x + 53, PositionS.y + 15); //p6 = CPoint(PositionS.x + 68, PositionS.y + 41); if (Status == 0) { p7 = CPoint(PositionS.x + 40, PositionS.y); p8 = CPoint(PositionS.x + 60, PositionS.y); } else if (Status == 1) { p7 = CPoint(PositionS.x + 49, PositionS.y + 5); p8 = CPoint(PositionS.x + 58, PositionS.y + 21); } break; case 2: p1 = CPoint(PositionS.x + 100, PositionS.y); p2 = CPoint(PositionS.x + 52, PositionS.y); p3 = CPoint(PositionS.x + 39, PositionS.y); p4 = CPoint(PositionS.x, PositionS.y); //p5 = CPoint(PositionS.x + 47, PositionS.y + 15); //p6 = CPoint(PositionS.x + 32, PositionS.y + 41); if (Status == 0) { p7 = CPoint(PositionS.x + 40, PositionS.y); p8 = CPoint(PositionS.x + 60, PositionS.y); } else if (Status == 1) { p7 = CPoint(PositionS.x + 51, PositionS.y + 5); p8 = CPoint(PositionS.x + 42, PositionS.y + 21); } break; case 3://11道岔 p1 = CPoint(PositionS.x, PositionS.y); p2 = CPoint(PositionS.x + 48, PositionS.y); p3 = CPoint(PositionS.x + 61, PositionS.y); p4 = CPoint(PositionS.x + 100, PositionS.y); p5 = CPoint(PositionS.x + 53, PositionS.y - 15); p6 = CPoint(PositionS.x + 68, PositionS.y - 41); if (Status == 0) { p7 = CPoint(PositionS.x + 40, PositionS.y); p8 = CPoint(PositionS.x + 60, PositionS.y); } else if (Status == 1) { p7 = CPoint(PositionS.x + 49, PositionS.y - 5); p8 = CPoint(PositionS.x + 58, PositionS.y - 21); } break; case 4://12道岔 p1 = CPoint(PositionS.x + 100, PositionS.y); p2 = CPoint(PositionS.x + 52, PositionS.y); p3 = CPoint(PositionS.x + 39, PositionS.y); p4 = CPoint(PositionS.x, PositionS.y); p5 = CPoint(PositionS.x + 47, PositionS.y - 15); p6 = CPoint(PositionS.x + 32, PositionS.y - 41); if (Status == 0) { p7 = CPoint(PositionS.x + 40, PositionS.y); p8 = CPoint(PositionS.x + 60, PositionS.y); } else if (Status == 1) { p7 = CPoint(PositionS.x + 51, PositionS.y - 5); p8 = CPoint(PositionS.x + 42, PositionS.y - 21); } break; }
这段代码是一个switch语句,根据变量Form的值来给p1、p2、p3、p4、p5、p6、p7和p8赋不同的坐标值。其中,如果Form的值为1,则p1的坐标为(PositionS.x, PositionS.y),p2的坐标为(PositionS.x + 48, PositionS.y),p3的坐标为(PositionS.x + 61, PositionS.y),p4的坐标为(PositionS.x + 100, PositionS.y);如果Form的值为2,则p1的坐标为(PositionS.x + 100, PositionS.y),p2的坐标为(PositionS.x + 52, PositionS.y),p3的坐标为(PositionS.x + 39, PositionS.y),p4的坐标为(PositionS.x, PositionS.y);如果Form的值为3,则p1的坐标为(PositionS.x, PositionS.y),p2的坐标为(PositionS.x + 48, PositionS.y),p3的坐标为(PositionS.x + 61, PositionS.y),p4的坐标为(PositionS.x + 100, PositionS.y),p5的坐标为(PositionS.x + 53, PositionS.y - 15),p6的坐标为(PositionS.x + 68, PositionS.y - 41);如果Form的值为4,则p1的坐标为(PositionS.x + 100, PositionS.y),p2的坐标为(PositionS.x + 52, PositionS.y),p3的坐标为(PositionS.x + 39, PositionS.y),p4的坐标为(PositionS.x, PositionS.y),p5的坐标为(PositionS.x + 47, PositionS.y - 15),p6的坐标为(PositionS.x + 32, PositionS.y - 41)。根据Status的值不同,p7和p8也会有不同的坐标值。
void CLineColor::BresenhamLine(CDC* pDC) { int dx = abs(P1.x - P0.x); int dy = abs(P1.y - P0.y); bool bInterCharge = TRUE; int e, signX, signY, temp; signX = (P1.x > P0.x) ? 1 : ((P1.x < P0.x) ? -1 : 0); signY = (P1.y > P0.y) ? 1 : ((P1.y < P0.y) ? -1 : 0); if (dy > dx) { temp = dx; dx = dy; dy = temp; bInterCharge = FALSE; } e = -dx; CPoint p = P0; for (int i = 1; i <= dx; i++) { pDC->SetPixelV(p.x, p.y, RGB(0, 0, 255)); if (bInterCharge) p.x += signX; else p.y += signY; e += 2 * dy; if (e >= 0) { if (bInterCharge) p.y += signY; else p.x += signX; e -= 2 * dx; } } }以以上代码为模板写一个DDA算法
void CLineColor::DDALine(CDC* pDC) {
float dx = P1.x - P.x;
float dy = P1.y - P.y;
float xIncrement, yIncrement, x = P.x, y = P.y;
int steps;
if (abs(dx) > abs(dy)) {
steps = abs(dx);
xIncrement = (dx > ) ? 1 : -1;
yIncrement = dy / dx;
}
else {
steps = abs(dy);
yIncrement = (dy > ) ? 1 : -1;
xIncrement = dx / dy;
}
pDC->SetPixelV(round(x), round(y), RGB(, , 255));
for (int i = 1; i <= steps; i++) {
x += xIncrement;
y += yIncrement;
pDC->SetPixelV(round(x), round(y), RGB(, , 255));
}
}
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![text/x-c++; charset=us-ascii](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)