Gegeven een reeks punten in het $$xy$$-vlak, en twee cirkels $$C_0$$ en $$C_1$$. Cirkel $$C_0$$ heeft als middelpunt $$(x_0, y_0)$$ en als straal $$R_0$$. Analoog is $$(x_1, y_1)$$ de coördinaat van het middelpunt van $$C_1$$, en is $$R_1$$ de straal van $$C_1$$. Het is de bedoeling om voor elk van de gegeven punten te bepalen bij welke cirkel dit punt het dichtst ligt.

De afstand van een punt tot een cirkel is hierbij gedefinieerd als de afstand van dit punt tot het dichtste punt op die cirkel. M.a.w. voor een punt met coördinaat $$(x, y)$$ is de afstand tot de cirkel met middelpunt $$(x_M, y_M)$$ en straal $$R$$ gegeven door $$ d = |\sqrt{(x-x_M)^2 + (y-y_M)^2} - R| $$
Schrijf de gevectoriseerde functie passende_cirkel() met als argumenten:

Je mag aannemen dat de argumenten x en y compatibel zijn. Dit betekent dat ze ofwel beide van het type float zijn, ofwel beide een NumPy-rij zijn (en in dit geval van gelijke lengte zijn, en minstens 1 getal bevatten). Het resultaat van deze functie is:

TIP: een boolean kan je naar een int omzetten door met de gehele waarde 1 te vermenigvuldigen. Zo levert de uitdrukking (a == b)*1 de waarde 1 indien a en b gelijk zijn, en de waarde 0 in het andere geval.

Voorbeeld

x = np.array([1.0, 2.0, 1.0, 0.0])
y = np.array([1.0, 2.0, 0.0, 2.0])
print(passende_cirkel(x, y, 0.0, 0.0, 1.0, 1.0, 1.0, 2.0)) = [0 1 0 1]
print(passende_cirkel(0.0, 2.0, 0.0, 0.0, 1.0, 1.0, 1.0, 2.0)) = 1