2017-05-11 28 views
-3

私は異なる放射を有する円に12点を描画しなければなりません。点1から点2に、点2から点3に線を引きます。線は問題ありません。スウィフト、極座標

私は12 *(x、y)を見つけるための数式を見つけることができませんが、極座標/円のものだと思いますか?

は、誰もがそれで作業し、多分私と一緒に共有したいですか?

は、私ができるより良い説明するかもしれない画像を参照してください:

Circle

+0

こんにちはアランさんは、 ure。 :) –

+0

おかげさまで、あなたは今の写真をご覧いただけますか? –

+0

あなたは(x、y)は1つの以上のクラシックにポーラー・システムを使用してポイントを配置することについての数学を読む必要があります。あなたの2つのポイントを取得したらラインを描くのは簡単です。 – Larme

答えて

1

これは私が得た結果である:

enter image description here

をそして、これは私の遊び場です:

//: Playground - noun: a place where people can play 

import Foundation 
import UIKit 

class DemoView: UIView { 

    override func draw(_ rect: CGRect) { 
     let origin = CGPoint(x: frame.size.width/2, y: frame.size.height/2) 
     let radius = frame.size.width/2 

     self.createCircle(origin: origin, radius: radius) 
     self.addLinesInCircle(origin: origin, radius: radius) 
    } 

    func createCircle(origin: CGPoint, radius: CGFloat) { 
     let path = UIBezierPath() 
     path.addArc(withCenter: origin, radius: radius, startAngle: 0, endAngle: CGFloat(2 * Double.pi), clockwise: true) 
     path.close() 
     UIColor.orange.setFill() 
     path.fill() 
    } 

    func addLinesInCircle(origin: CGPoint, radius: CGFloat) { 
     let path = UIBezierPath() 
     let incrementAngle: CGFloat = CGFloat.pi/6 
     let ratios: [CGFloat] = [3/6, 5/6, 3/6, 1/6, 5/6, 2/6, 4/6, 2/6, 4/6, 4/6, 4/6, 4/6, 3/6] 

     for (index, ratio) in ratios.enumerated() { 
      let point = CGPoint(x: origin.x + cos(CGFloat(index) * incrementAngle) * radius * ratio, 
           y: origin.y + sin(CGFloat(index) * incrementAngle) * radius * ratio) 
      if index == 0 { 
       path.move(to: point) 
      } else { 
       path.addLine(to: point) 
      } 
     } 
     path.close() 
     UIColor.black.set() 
     path.stroke() 
    } 

} 

let demoView = DemoView(frame: CGRect(x: 0, y: 0, width: 320, height: 320)) 
+1

本当にありがとうございます:-) –

関連する問題