1

Тема: Якісь дуже дивні значення видає ваш Python

Прів. Є якийсь відрізок, і от я хочу повернути його на стільки то градусів, і отримати нові точки. От кіт

import math

frange=lambda minval, maxval, step:map(lambda x: x*step, range(int(minval/step), int(maxval/step)))

a1=-2
b1=0

a2=2
b2=0

angle = math.radians(90)
print(angle)

a1 = a1*math.cos(angle)-b1*math.sin(angle)
b1 = a1*math.sin(angle)+b1*math.cos(angle)

a2 = a2*math.cos(angle)-b2*math.sin(angle)
b2 = a2*math.sin(angle)+b2*math.cos(angle)

print("a1 = {0},  b1 = {1},  a2 = {2},  b2 = {3}".format(a1,b1,a2,b2))

a = 2*(a1-a2)
b = 2*(b1-b2)

c = a1**2-a2**2+b1**2-b2**2

for x in frange(0, 10, 1):
    print((-a*x+c)/b)

по ідеї, якщо в мене є точка -2;0, то при повороті на 90 градусів, вона має бути 0;-2, але от, що мені повертається
http://не-дійсний-домен/ofGhw/bb9baa0288.png
чому так?

2

Re: Якісь дуже дивні значення видає ваш Python

Ви впевнені що у вас кут у градусах а не в радіанах?
п.с. домножити на (пі/180).

3

Re: Якісь дуже дивні значення видає ваш Python

Chemist-i написав:

Ви впевнені що у вас кут у градусах а не в радіанах?
п.с. домножити на (пі/180).

так я ж використовую функцію, котра переводе градуси в радіани, до того ж навіть якби проблема була в градусорадіанах, то дистанція між новими точками мала б залишитись такою ж самою, а тут вона якась замала, майже нуль при потрібних 4

4

Re: Якісь дуже дивні значення видає ваш Python

Хз шо ви виводите, бо в мене виводить -2.0 там, де й має.
http://ideone.com/af3fpN

Подякували: FakiNyan1

5

Re: Якісь дуже дивні значення видає ваш Python

Перепрошую.
Може в цьому проблема?

6

Re: Якісь дуже дивні значення видає ваш Python

схоже, проблема-біда-горе було в тому, що я присвоюю нові значення змінних тим самим змінним, бо от переписав з новими змінними, і все оке

import math

frange=lambda minval, maxval, step:map(lambda x: x*step, range(int(minval/step), int(maxval/step)))

a1=-2
b1=0

a2=2
b2=0

angle = math.radians(90)
print(angle)

a1n = a1*math.cos(angle)-b1*math.sin(angle)
b1n = a1*math.sin(angle)+b1*math.cos(angle)

a2n = a2*math.cos(angle)-b2*math.sin(angle)
b2n = a2*math.sin(angle)+b2*math.cos(angle)

print("a1 = {0:.16f},  b1 = {1:.16f},  a2 = {2:.16f},  b2 = {3:.16f}".format(a1n,b1n,a2n,b2n))

a = 2*(a1n-a2n)
b = 2*(b1n-b2n)
c = a1n**2-a2n**2+b1n**2-b2n**2

print("a = {0:.16f},  b = {1:.16f},  c = {2:.16f}".format(a,b,c))
print("first dis: {0:.16f},  second dis: {1:.16f}".format(math.sqrt((a2n-a1n)**2+(b2n-b1n)**2), math.sqrt(a**2+b**2)))

for x in frange(0, 10, 1):
    print("{0:.16f}".format((-a*x+c)/b))
Подякували: koala, leofun012

7

Re: Якісь дуже дивні значення видає ваш Python

Chemist-i написав:

Перепрошую.
Може в цьому проблема?

та нє, ліл, перепрошувач

8

Re: Якісь дуже дивні значення видає ваш Python

FakiNyan написав:
frange=lambda minval, maxval, step:map(lambda x: x*step, range(int(minval/step), int(maxval/step)))
 

У вас округлення мені не подобаються, як і лямбди з відображеннями - забагато їх для простої задачі.

def frange( start , stop, step = 1.0 ):
    while start*step < stop*step:
        yield start
        start += step 

А ще є numpy.arange (та numpy.dot).

Подякували: leofun01, ADR2

9

Re: Якісь дуже дивні значення видає ваш Python

koala написав:
FakiNyan написав:
frange=lambda minval, maxval, step:map(lambda x: x*step, range(int(minval/step), int(maxval/step)))
 

У вас округлення мені не подобаються, як і лямбди з відображеннями - забагато їх для простої задачі.

def frange( start , stop, step = 1.0 ):
    while start*step < stop*step:
        yield start
        start += step 

А ще є numpy.arange (та numpy.dot).

що не так з округленнями? отой костиль з frange мені пан P.Y. дав