三角函式在繪製圓中的使用

2021-07-05 06:06:47 字數 3826 閱讀 9746

1標頭檔案.h
//

// pieview.h

// blurdemo

//// created by sj_w on 15/9/11.

//#import @inte***ce pieview : uiview

@property (nonatomic, strong) nsarray *percentarr;//百分比分段

@property (nonatomic, strong) nsmutablearray *anglearr;//對應的弧度

@property (nonatomic, strong) nsmutablearray *midanglearr;//每個弧度分段的中心點位置

@end

2、.m檔案
//

// pieview.m

// blurdemo

//// created by sj_w on 15/9/11.

//#import "pieview.h"

#define kscreenwidth [uiscreen mainscreen].bounds.size.width

#define outr ((kscreenwidth)/4)

#define inr ((kscreenwidth/4)-26)

#define piecenterx kscreenwidth/2

#define piecentery 150

#define piecenter cgpointmake(kscreenwidth/2, frame.size.height/2)

#define labeltag 121

@implementation pieview

- (id)initwithframe:(cgrect)frame

return self;

}- (void)initsubviews

}- (void)initarr

}// only override drawrect: if you perform custom drawing.

// an empty implementation adversely affects performance during animation.

- (void)drawrect:(cgrect)rect {

//繪製外圓填充綠色

cgcontextref context = uigraphicsgetcurrentcontext();

cgcontextsetfillcolorwithcolor(context, [uicolor greencolor].cgcolor);

cgcontextaddarc(context, kscreenwidth/2, 150, outr, 0, 2*m_pi, 0);

cgcontextfillpath(context);

//繪製外圓設定顏色為白色

cgcontextsetlinewidth(context, 2);

cgcontextsetstrokecolorwithcolor(context, [uicolor whitecolor].cgcolor);

cgcontextaddarc(context, piecenterx, piecentery, outr, 0, 2*m_pi, 0);

cgcontextstrokepath(context);

//繪製內圓填充色為橙色

cgcontextsetfillcolorwithcolor(context, [uicolor orangecolor].cgcolor);

cgcontextaddarc(context, piecenterx, piecentery, inr, 0, 2*m_pi, 0);

cgcontextfillpath(context);

//繪製內圓顏色為白色

cgcontextsetlinewidth(context, 2);

cgcontextaddarc(context, piecenterx, piecentery, inr, 0, 2*m_pi, 0);

cgcontextsetstrokecolorwithcolor(context, [uicolor whitecolor].cgcolor);

cgcontextstrokepath(context);

for (int i = 0; i < self.anglearr.count; i++) {

//根據弧度算內分割的線的起始點

cgfloat angle = [self.anglearr[i] floatvalue];

cgpoint inpoint = cgpointmake(piecenterx+inr*cos(angle), piecentery+inr*sin(angle));

cgpoint outpoint = cgpointmake(piecenterx+outr*cos(angle), piecentery+outr*sin(angle));

//連線起始點

cgcontextsetlinewidth(context, 2.0);

cgcontextsetstrokecolorwithcolor(context, [uicolor whitecolor].cgcolor);

cgcontextmovetopoint(context, inpoint.x, inpoint.y);

cgcontextaddlinetopoint(context, outpoint.x, outpoint.y);

cgcontextstrokepath(context);

//算每個分段弧度的中心點位置

cgfloat midangel = [self.midanglearr[i] floatvalue];

cgpoint midpoint = cgpointmake(piecenterx+(inr+outr)/2.0*cos(midangel), piecentery+(inr+outr)/2.0*sin(midangel));

// cgcontextsetfillcolorwithcolor(context, [uicolor whitecolor].cgcolor);

// cgcontextaddarc(context, midpoint.x, midpoint.y, 3, 0, 2*m_pi, 0);

// cgcontextfillpath(context);

//每個分段延伸出去的折點

cgpoint breakpoint = cgpointmake(piecenterx+(outr+(outr-inr)/2.0)*cos(midangel), piecentery+(outr+(outr-inr)/2.0)*sin(midangel));

// cgcontextsetfillcolorwithcolor(context, [uicolor whitecolor].cgcolor);

// cgcontextaddarc(context, breakpoint.x, breakpoint.y, 3, 0, 2*m_pi, 0);

// cgcontextfillpath(context);

//結束點的位置,確定說明文字的放置位置

cgpoint endpoint;

if (breakpoint.x//效果圖

三角函式與反三角函式的使用

假設該三角形是直角三角形。那麼 依照數學基礎是 sin b b c 其中b是邊b對應的角 但是在c c 程式上面稍微有點不同 那就是弧度制與角度制的區分 先說三角函式,在 程式設計裡面 舉sin 為例 sin 弧度制 只有裡面放弧度制,才能算的精準,假設要算45 的sin值 那麼對45 進行轉換為弧...

常見三角函式與反三角函式

16341019 資料科學與計算機學院 toc 三角函式公式 反三角函式公式 簡單函式影象 1三角函式公式 兩角和公式 sin a b sinacosb cosasinb sin a b sinacosb cosasinb cos a b cosacosb sinasinb cos a b cosa...

常見三角函式與反三角函式

16341019 資料科學與計算機學院 toc 三角函式公式 反三角函式公式 簡單函式影象 1三角函式公式 兩角和公式 sin a b sinacosb cosasinb sin a b sinacosb cosasinb cos a b cosacosb sinasinb cos a b cosa...