Определить, принадлежит ли точка с координатами (x; y) кругу радиуса R с центром в начале координат.
Пользователь вводит координаты точки и радиус круга.
Если выбрать точку на координатной плоскости, то можно увидеть, что проекции ее координат на оси x и y являются катетами прямоугольного треугольника. А гипотенуза этого прямоугольного треугольника как раз показывает расстояние от начала координат до точки. Таким образом, если длина гипотенузы будет меньше радиуса круга, то точка будет принадлежать кругу; иначе она будет находится за его пределами.
Длину гипотенузы вычисляется по теореме Пифагора: квадрат гипотенузы равен сумме квадратов катетов. Откуда гипотенуза равна квадратному корню из суммы квадратов катетов.
Пример выполнения программы:
Обратите внимание, можно вводить отрицательные координаты. При возведении в квадрат все-равно будет получено положительное число.
Вычисление положения точек в окружности
У меня есть немного пустой ум на этот момент. У меня есть проблема, когда мне нужно вычислить положение точек вокруг центральной точки, предполагая, что все они равноудалены от центра и друг от друга.
количество точек является переменной, так что это DrawCirclePoints(int x) Я уверен, что есть простое решение, но для жизни меня, я просто не вижу его:)
11 ответов:
точка под углом тета на окружности, центр которой (x0,y0) и чей радиус r и (x0 + r cos theta, y0 + r sin theta) . Теперь выберите theta значения, равномерно расположенные между 0 и 2pi.
учитывая длину радиуса r и угол t в радианах и центре круга (h,k), вы можете вычислить координаты точки на окружности следующим образом (это псевдокод, вам придется адаптировать его к вашему языку):
вот решение с использованием C#:
пример вывода из DrawCirclePoints(8, 10, new Point(0,0)); :
используя один из приведенных выше ответов в качестве базы, вот пример Java / Android:
Я должен был сделать это в интернете, так что вот версия coffeescript @scottyab это ответ выше:
для завершения то, что вы описываете как «положение точек вокруг центральной точки(предполагая, что все они равноудалены от центра)» — это не что иное, как «полярные координаты». И вы просите способ преобразования между полярными и Декартовыми координатами, которая дается как x = r*cos(t) , y = r*sin(t) .
здесь R версия, основанная на ответе @Pirijan выше.
угол между каждой из ваших точек будет 2Pi/x таким образом, вы можете сказать, что для точек n= 0 to x-1 угол от определенной 0 точки равен 2nPi/x .
предполагая, что ваша первая точка находится в (r,0) (где r-расстояние от центральной точки), то положение относительно центральной точки будет:
на основе ответа выше от Даниила, вот мой взять с помощью Python3.
Вычисление положения точек в окружности
в данный момент у меня немного пустой ум. У меня есть проблема, когда мне нужно вычислить положение точек вокруг центральной точки, предполагая, что они все равноудалены от центра и друг от друга.
количество точек является переменным, поэтому это DrawCirclePoints(int x) Я уверен, что есть простое решение, но для жизни меня, я просто не вижу его:)
11 ответов
точка под углом тета на окружности, центр которой (x0,y0) и чей радиус r is (x0 + r cos theta, y0 + r sin theta) . Теперь выберите theta значения, равномерно расположенные между 0 и 2pi.
учитывая длину радиуса r и угол t в радианах и центре круга (h,k), вы можете рассчитать координаты точки на окружности следующим образом (это псевдокод, вам придется адаптировать его к вашему языку):
вот решение с использованием C#:
пример вывода из DrawCirclePoints(8, 10, new Point(0,0)); :
используя один из приведенных выше ответов в качестве основы, вот пример Java / Android:
Я должен был сделать это в интернете, так что вот версия coffeescript @scottyab это ответ выше:
для завершения то, что вы описываете как «положение точек вокруг центральной точки(предполагая, что все они равноудалены от центра)», — это не что иное, как «полярные координаты». И вы просите способ преобразования между полярными и Декартовыми координатами, которая дается как x = r*cos(t) , y = r*sin(t) .
рабочее решение на Java:
здесь R версия, основанная на ответе @Pirijan выше.
угол между каждой из ваших точек будет 2Pi/x таким образом, вы можете сказать, что для очков n= 0 to x-1 угол от определенной 0 точки равен 2nPi/x .
предполагая, что ваша первая точка находится в (r,0) (где r-расстояние от центральной точки), то позиции относительно центральной точки будут:
основываясь на ответе выше от Даниила, вот мой подход с использованием Python3.