Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
SIN, COS поворот кривой на 1 градус
 
Подскажите пожалуйста где ошибка, хочу повернуть кривую X Y на 1 градус к примеру по часовой стрелке:
Код
For i = FirstPoint To LastPoint Step 1
f = 1 * (Pi / 180)
X = PadPage.Range("N" & i).Value * ((PadPage.Range("N" & i).Value * Cos(f)) - (PadPage.Range("O" & i) * Sin(f)))
Y = PadPage.Range("O" & i).Value * ((PadPage.Range("N" & i).Value * Sin(f)) + (PadPage.Range("O" & i) * Cos(f)))
PadPage.Range("N" & i).Value = X
PadPage.Range("O" & i).Value = Y
Next i
 
а повернуть относительно чего, извините
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Относительно условного центра оси. Как стрелка на  часах...
Изменено: Zavarnik - 11 Апр 2018 16:31:51
 
отличный ответ!
понятно, что вращение происходит вокруг точки или оси, а вот эта точка может быть где угодно:
это может быть начала или окончание Вашей кривой, это может быть ее "центр тяжести" это может быть произвольная точка
так вот поворот Вашей кривой на 1 град. вокруг перечисленных выше точек - это разные повороты и результаты будут совершенно разные.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Мне нужно находить именно центр от первой и конечной точки. Первая 0 конечная 9 центр 8, как в текст боксах. Можете помочь?
 
Цитата
Zavarnik написал:
центр 8
или 4 или 5 ?
 
БМВ,Хороший вопрос, в моем понимании это 1 + 9 / 2 = 5  :)  
Изменено: Zavarnik - 10 Апр 2018 17:11:14
 
а в моем (0+9)/2 = 4.5
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Ну я сам подберу оптимальный центр, могли ли бы вы показать можно вращать? Смысл не в споре о выборе точки, а в том что бы визуально кривую двигать, например сопоставить ее по оси к серой. Вот вправо, влево, верх, вниз не проблема, а вращать это к сожалению мой мозг не осилит  :)  
 
http://kompgraflab.ru/page5.php
http://sernam.ru/book_mm3d.php?id=45
http://www.gamedev.ru/code/forum/?id=17624
 
Zavarnik, А разве просто Pi можно брать? это 0 у вас. или вычислять или application.WorksheetFunction.Pi
также
Код
Function GetValues()
FirstPoint = SORT_FirstPoint.Value + 4
LastPoint = SORT_LastPint.Value + 4
SORT_MiddlePoint.Value = Round((SORT_FirstPoint.Value + SORT_LastPint.Value) / 2, 0)
MiddlePoint = SORT_MiddlePoint.Value + 4
PN = PadPage.Range("N4").Value
MF = PadPage.Range("O4").Value
End Function

Код
Private Sub SORT_RT_RH_Click()
Rotate (True)
End Sub
Private Sub SORT_RT_LF_Click()
Rotate (False)
End Sub
Private Sub Rotate(Direction As Boolean)
f = IIf(Direction, 1, -1) * (Application.WorksheetFunction.Pi / 180)
vCos = Cos(f)
vSin = Sin(f)
With PadPage
    X0 = .Range("N" & MiddlePoint)
    Y0 = .Range("O" & MiddlePoint)
    Temp = 1 - Cos(f)
    For i = FirstPoint To LastPoint Step 1
        X = .Range("N" & i).Value
        Y = .Range("O" & i).Value
        .Range("N" & i).Value = (X - X0) * vCos - (Y - Y0) * vSin + X0
        .Range("O" & i).Value = (X - X0) * vSin + (Y - Y0) * vCos + Y0    Next i
End With
End Sub

Изменено: БМВ - 11 Апр 2018 17:58:45
 
в файле вращающийся фрагмент параболы
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Zavarnik написал:
в моем понимании это 1 + 9 / 2 = 5

в моем понимании   1 + 9 / 2 = 5,5
 
Ігор Гончаренко, Спасибо
 
Так вот правишь, помогаешь, направляешь, а спасибо другому :-)
 
Миша, жизнь полна несправедливости.
а это я даже не написал "дико вращающийся фрагмент параболы"))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь, просто презентация анимированная более выигрышная :-). Хотя, так как там чисто формульный вариант и не подходит для конкретной задачи, но все равно более презентабелен :-)
 
БМВ, Можете сделать рабочими кнопки поворота по часовой и против? Попытался разобраться в примере Ігор Гончаренко и нечего не  понял... Ну можете носом ткнуть, помочь так сказать? Ну не получается...

PS Для примера одно нажатие кнопки поворот 1 градус
Изменено: Zavarnik - 12 Апр 2018 15:13:03
 
Zavarnik,  А вы №11 пропустили не глядя?
 
БМВ, Спасибо Вам за Ваш труд! Приятно удивлен результатом!
Страницы: 1
Читают тему (гостей: 1)