[Python] Une fonction simple pour trouver les coordonnées du centre d'un cercle

Une fonction simple pour trouver les coordonnées centrales d'un cercle

Il s'agit d'une méthode simple pour sélectionner trois points dans l'ordre dans le tableau, trouver deux bissectrices verticales et centrer leur intersection.

import numpy as np
import matplotlib.pyplot as plt
import random

#Nombre total de points
N = 4

#xy est une entrée, xy_o sorties
#Les deux sont des tableaux et des formes bidimensionnels,[[x1, y1], [x2, y2], [x3, y3], ...]
def circle_c(xy):
    #Puisque 3 points sont utilisés pour trouver le centre du cercle, la sortie est réduite de 2 points.
    xy_o_len = len(xy) - 2
    #Définissez le tableau pour la sortie.
    xy_o = np.zeros((xy_o_len, 2))
    #Trouvez le centre du cercle par 3 points dans l'ordre à partir de l'avant.
    for i in range(xy_o_len):
        #Calcul auxiliaire
        x12 = xy[i+0, 0] + xy[i+1, 0]
        # x13 = xy[i+0, 0] + xy[i+2, 0]
        x23 = xy[i+1, 0] + xy[i+2, 0]
        x21 = xy[i+1, 0] - xy[i+0, 0]
        # x31 = xy[i+2, 0] - xy[i+0, 0]
        x32 = xy[i+2, 0] - xy[i+1, 0]
        y12 = xy[i+0, 1] + xy[i+1, 1]
        # y13 = xy[i+0, 1] + xy[i+2, 1]
        # y23 = xy[i+1, 1] + xy[i+2, 1]
        y21 = xy[i+1, 1] - xy[i+0, 1]
        y31 = xy[i+2, 1] - xy[i+0, 1]
        y32 = xy[i+2, 1] - xy[i+1, 1]
        #Calculez le centre du cercle
        xy_o[i, 0] = (y31 - x21*x12/y21 + x32*x23/y32)*0.5 / (x32/y32 - x21/y21) #x composant
        xy_o[i, 1] = -(xy_o[i, 0] - x12 * 0.5)*x21/y21 + y12*0.5 #composant y
    return xy_o

x = np.arange(N)
y = np.random.rand(N)
xy = np.c_[x, y]

cxy = circle_c(xy)

f = plt.subplot()
f.plot(xy[:, 0], xy[:, 1], marker='.', markersize=20)
f.scatter(cxy[:, 0], cxy[:, 1], s=900, c="pink", alpha=0.5, linewidths="2", edgecolors="red")
f.set_aspect('equal')
plt.show()

Recommended Posts

[Python] Une fonction simple pour trouver les coordonnées du centre d'un cercle
[Python3] Définition d'un décorateur qui mesure le temps d'exécution d'une fonction
Récupérer l'appelant d'une fonction en Python
Python: je souhaite mesurer proprement le temps de traitement d'une fonction
J'ai créé une fonction pour voir le mouvement d'un tableau à deux dimensions (Python)
Note Python: Le mystère de l'attribution d'une variable à une variable
Ajouter une fonction pour indiquer la météo d'aujourd'hui au bot slack (fabriqué par python)
J'ai essayé de trouver l'entropie de l'image avec python
Découvrez la largeur apparente d'une chaîne en python
Une implémentation Python simple de la méthode k-voisinage (k-NN)
Ecrire un programme python pour trouver la distance d'édition [python] [distance Levenshtein]
J'ai fait une fonction pour vérifier le modèle de DCGAN
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Trouver les valeurs propres d'une vraie matrice symétrique en Python
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
J'ai créé une fonction pour découper l'image de python openCV, alors veuillez l'utiliser.
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
Comment déterminer l'existence d'un élément sélénium en Python
Trouvez la valeur optimale de la fonction à l'aide d'un algorithme génétique (partie 2)
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
Comment vérifier la taille de la mémoire d'une variable en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy
Créez une fonction pour obtenir le contenu de la base de données dans Go
[python] Une note que j'ai commencé à comprendre le comportement de matplotlib.pyplot
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
Trouver l'intersection d'un cercle et d'une droite (matrice sympy)
[Python3] Réécrire l'objet code de la fonction
Un simple script IDAPython pour nommer une fonction
[python] [meta] Le type de python est-il un type?
L'histoire du traitement A du blackjack (python)
[Python] Explique comment utiliser la fonction range avec un exemple concret
Diverses méthodes pour créer numériquement la fonction inverse d'une certaine fonction Introduction
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Comment créer un wrapper qui préserve la signature de la fonction à envelopper
[Introduction à Python] Comment écrire une chaîne de caractères avec la fonction format
Trouvez la valeur minimale de la fonction par la méthode d'optimisation du groupe de particules (PSO)
Code Python pour déterminer les signaux mensuels pour les investissements de force relative
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
[Python] Note: Fonction auto-conçue pour trouver la zone de distribution normale
Introduction et utilisation de la bouteille Python ・ Essayez de configurer un serveur Web simple avec une fonction de connexion
Comment calculer la volatilité d'une marque
Dessiner un graphique d'une fonction quadratique en Python
Comment trouver la zone du diagramme de Boronoi
Trouver la main de "Millijan" par l'optimisation des combinaisons
Copiez la liste en Python
Trouvez le nombre de jours dans un mois
Écrire une note sur la version python de python virtualenv
Découvrez la fraction de la valeur saisie en python
Trouvez la solution de l'équation d'ordre n avec python
[Python] Une compréhension approximative du module de journalisation
Sortie sous la forme d'un tableau python
amateur python tente de résumer la liste ②
[Python] Trouvez la matrice de translocation en notation d'inclusion