顺时针与逆时针

顺时针与逆时针
代码部分
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetWindowExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);

rect.OffsetRect(-rect.Width()/2, -rect.Height()/2);

CPoint Twelve(0, rect.Width()/2), Three(rect.Height()/2, 0);

CPen penBlack, penBlue, *pOldPen;
penBlack.CreatePen(PS_DASHDOT, 1, RGB(255, 0, 0));
penBlue.CreatePen(PS_SOLID, 1, RGB(0, 0, 255));

pDC->SetArcDirection(AD_CLOCKWISE);
pOldPen = pDC->SelectObject(&penBlue);
pDC->Arc(rect, Twelve, Three);

pDC->SetArcDirection(AD_COUNTERCLOCKWISE);
pOldPen = pDC->SelectObject(&penBlack);
pDC->Arc(rect, Twelve, Three);

pDC->SelectObject(pOldPen);
编译后
--------------------Configuration: Method - Win32 Debug--------------------
Compiling...
Skipping... (no relevant changes detected)
MethodView.cpp

MethodView.obj - 0 error(s), 0 warning(s)
链接后
--------------------Configuration: Method - Win32 Debug--------------------
Linking...

Method.exe - 0 error(s), 0 warning(s)
运行后,没有得到想要的结果。
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetWindowExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);

rect.OffsetRect(-rect.Width()/2, -rect.Height()/2);

CPoint Twelve(0, rect.Height()/2), Three(rect.Width()/2, 0);

CPen penBlack, penBlue, * pOldPen;
penBlue.CreatePen(PS_SOLID, 1, RGB(0, 0, 255));
penBlack.CreatePen(PS_DASHDOT, 1, RGB(255, 0, 0));

pDC->SetArcDirection(AD_CLOCKWISE);
pOldPen = pDC->SelectObject(&penBlue);
pDC->Arc(rect, Twelve, Three);

pDC->SetArcDirection(AD_COUNTERCLOCKWISE);
pOldPen = pDC->SelectObject(&penBlack);
pDC->Arc(rect, Twelve, Three);

pDC->SelectObject(pOldPen);
=============================================================分割线================================================================
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetViewportExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);

rect.OffsetRect(-rect.Width()/2, -rect.Height()/2);

CPoint Twelve(0, rect.Height()/2), Three(rect.Width()/2, 0);

CPen penBlack, penBlue, * pOldPen;
penBlue.CreatePen(PS_SOLID, 1, RGB(0, 0, 255));
penBlack.CreatePen(PS_DASHDOT, 1, RGB(255, 0, 0));

pDC->SetArcDirection(AD_CLOCKWISE);
pOldPen = pDC->SelectObject(&penBlue);
pDC->Arc(rect, Twelve, Three);

pDC->SetArcDirection(AD_COUNTERCLOCKWISE);
pOldPen = pDC->SelectObject(&penBlack);
pDC->Arc(rect, Twelve, Three);

pDC->SelectObject(pOldPen);
现在可以得到正常结果,对比上下代码,可能无法找到区别
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetWindowExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);

pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetViewportExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);
现在区别明显一些,在坐标系的设置上有着问题。编译,链接都无法找到错误的地方,仅仅是没有预期的结果。

时间: 2024-12-16 02:08:30

顺时针与逆时针的相关文章

判断两个平面向量之间夹角是顺时针还是逆时针

判断两个向量之间夹角是顺时针还是逆时针 利用平面向量的叉乘 a = (x1,y1)    b = (x2,y2) a×b = x1y2 - x2y1 若结果为正,则向量b在a的顺时针方向 否则,在a的逆时针方向 若结果为0,则a与b共线 注:两向量之间夹角以小于180度计算

如何判断封闭多边形是顺时针还是逆时针?

方法一:Green公式 Green公式揭示了平面区域的二重积分和封闭曲线上的线积分的关系. 其中L+表示沿着封闭区域的边界曲线正向. 并且由Green公式的推导过程我们知道: 这里若L=-y,可以保证(1)式子在区域中恒正,且等于封闭区域面积. 同理,M=x,也可以保证(2)式子在区域中恒正,且等于封闭区域面积. 所以我们只需沿着多边形的边求曲线积分,若积分为正,则是沿着边界曲线正方向(逆时针),反之为顺时针,且所得绝对值为多边形面积. NOTE:边界曲线的正向即沿着边界曲线,单连通区域总在边界

判断一个多边形是顺时针还是逆时针的方法

1.关于如何判定多边形是顺时针还是逆时针对于凸多边形而言,只需对某一个点计算叉积 = ((xi - xi-1),(yi - yi-1)) x ((xi+1 - xi),(yi+1 - yi)) = (xi - xi-1) * (yi+1 - yi) - (yi - yi-1) * (xi+1 - xi) 如果上式的值为正,逆时针:为负则是顺时针. 而对于一般的简单多边形,则需对于多边形的每一个点计算上述值,如果正值比较多,是逆时针:负值较多则为顺时针. 2.还有一种说明是取多边形的极点值,多边形

简单多边形~判断此多边形是顺时针还是逆时针。

链接:https://www.nowcoder.com/acm/contest/110/B来源:牛客网 题目描述 为了让所有选手都感到开心,Nowcoder练习赛总会包含一些非常基本的问题. 比如说: 按顺时针或逆时针方向给你一个简单的多边形的顶点坐标,请回答此多边形是顺时针还是逆时针. 输入描述: 输入包含N + 1行.第一行包含一个整数N,表示简单多边形的顶点数.在下面的N行中,第i行包含两个整数x i ,y i ,表示简单多边形中的第i个顶点的坐标. 输出描述: 如果简单多边形按顺时针顺序

顺时针和逆时针螺旋打印二维数组(行列式)

一.要求: 行列式,行和宽不一定相等,要求顺时针螺旋打印每一个元素,所谓顺时针螺旋即: 第一圈:从第一行第一列元素开始,先从左到右打印第一行所有元素,接着打印最后一剩余列元素,再从右到左打印最后一行剩余元素,接着从下到上打印第一列剩余元素 第二圈:从第二行第二列开始,按上面的顺时针顺序打印一圈元素 ...,一圈圈反复,直到把所有元素无重复的打印完. 逆时针螺旋与上面的顺序刚好相反. 二.分析: 顺时针螺旋打印可以将问题分割为:先按顺时针打印第一圈,再按顺时针打印第二圈,其中每圈又分四个步骤:从左

顺时针(逆时针)打印矩阵

题目描述:顺时针打印一个任意arr[line][row]矩阵,如: arr[5][4] 1 2 3 4 14 15 16 5 13 20 17 6 12 19 18 7 11 10 9 8 arr[5][5] 1 16 15 14 13 2 17 24 23 12 3 18 25 22 11 4 19 20 21 10 5 6 7 8 9 思路:顺时针打印  第一圈 先向右打印 arr[0][0] --->arr[0][row-1] 再向下打印 arr[1][row-1]--->arr[lin

POJ 3083 Children of the Candy Corn(顺时针DFS+逆时针DFS+BFS)

题目链接:POJ 3083 Children of the Candy Corn [题意]给出一个迷宫,不超过40*40,'#'代表墙,'.'代表能走,'S'是起点,'E'是终点.分别求出从起点一直沿左走,一直沿右走,走到终点所需要的步数.以及走出迷宫的最小步数. [思路]首先最小步数很简单,一个普通BFS搞定,这道题重点是一直向左走和一直向右走的DFS的方向问题,方向还和游客当时朝向有关.开始一直认为是每次都向左(右)转,直到可以走,然后就一直不对,在google了之后才知道向左走要遵循左上右

判断两向量之间夹角是顺时针还是逆时针?

设右手坐标系下,向量a = (x1, y1),b = (x2, y2),则从向量a到向量b的角度为: <a, b> = -arcsin((a X b)z / |a| |b|) -arcsin( (x1y2 - x2y1) / |a||b|) 注:1. X——是叉乘: 2. 在右手坐标系中,a X b的方向(即z轴方向)与向量a到向量b的夹角正好相反,故前面加上“-”.右手坐标系中,握拳方向是逆时针.

Quartz 2D

1.什么是Quart 2D呢? 不知道,但是可以通过Quart2D绘制图形,自定义控件等等. 2.如何通过Quart 2D绘制图形和自定义控件? 有两种方式:C语言/OC;OC其实最后还是转换成C,那么用C会不会效率稍高? 3.基本图形的绘制 C语言方式 获取当前图形上下文 : CGContextRef ctx = UIGraphicsGetCurrentContext(); 绘制图形: 圆:CGContextRef _Nullable c:图形上下文; CGFloat x, CGFloat y