Android examples for Graphics:Path Point
Given a center point and radius of a circle, return a new point on the circle at the given angle.
/*/*from w ww .j a va 2s. c om*/ * The MIT License (MIT) * * Copyright (c) 2015 ustwo studio inc (www.ustwo.com) * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ //package com.java2s; import android.graphics.PointF; public class Main { /** * Given a center point and radius of a circle, return a new point on the circle at the given angle. * Due north of the center point (x=0) is 0 degrees and increasing the degree value will move * the point clockwise around the circle.<br><br> * * Throws IllegalArgumentException if radius < 0. * * @param radius Radius of circle * @param angleDegrees Angle from center (in degrees) * @param center Center point of circle * @return New point on circle */ public static PointF getPointOnCircle(float radius, double angleDegrees, PointF center) { PointF newPoint = new PointF(); updatePointOnCircle(newPoint, radius, angleDegrees, center); return newPoint; } /** * Given a center point and radius of a circle, update a point on the circle at the given angle. * Due north of the center point (x=0) is 0 degrees and increasing the degree value will move * the point clockwise around the circle.<br><br> * * Throws IllegalArgumentException if radius < 0. * * @param pointToUpdate Point on circle updated with x and y values * @param radius Radius of circle * @param angleDegrees Angle from center (in degrees) * @param center Center point of circle */ public static void updatePointOnCircle(PointF pointToUpdate, float radius, double angleDegrees, PointF center) { if (radius < 0) { throw new IllegalArgumentException("Radius cannot be < 0."); } double angleRadians = Math.toRadians(angleDegrees); float x = (float) (radius * Math.sin(angleRadians) + center.x); float y = (float) (radius * -Math.cos(angleRadians) + center.y); pointToUpdate.set(x, y); } }