Пользователь
Забыли пароль? Регистрация
Сейчас на сайте

Пользователей на сайте: 465

0 пользователей, 465 гостей

Система координат

VB

#1
Biggreen
  • Статус: Патриот
  • Сообщения: 883
  • Карма: 72
  • Возраст: 45
  • Пол:
Собственно вопрос как известно система координат "х,y" компьютером считается с левого верхнего угла сверху вниз координата "у" а слева направо координата "х" - при построении же графика нужно чтоб 0 координаты "у" находился гдето в центре экрана а от него вверх вниз шли соответственно +1 и -1 итд - вот тут то у меня случился математический штопор :-) Никак не могу составить формулу перевода "y" в "у" в смысле пиксела на экране - если с масштабом всё в порядке там тупо умножение то вот с направлением затык - мож кто подскажет? картинку приложил

http://clip2net.com/s/11qTf с "х" всё понятно тупо умножить на нужный масштаб а потом добавить 50 пикселей чтоб рисовало не прямо от левого края а от центра, а вот с "у" то что умножить на нужный масштаб и приплюсовать 220 пикселов чтоб опустить от верхнего края это тоже понятно, а вот как перевернуть математически направление роста??? математики хэээлп :-) Можно конечно тупо отрисовать перевернутым а потом программно перевернуть, но это как то метод через 1но место выходит :-D



Вот сам отрезок кода собстно(Всё что относится к нарисовке -ну не считая форм):
CODE
 
       Dim Mygraph As Graphics
       Dim Y As Single
       Dim X as Single
       Dim Oldpoint As New Point(50, 338)
       Dim CurrentPoint As Point
       Dim Mypen2 As New Pen(Brushes.Black, 5)
       Mygraph = PictureBox1.CreateGraphics
       For x = 1 To 30 Step 0.1
           Y = Math.Sin(x) / x
           CurrentPoint.X = 40 + (x * 15)
           CurrentPoint.Y = 220 + (Y * 140)  'вот тут собственно надо как то "перевернуть"
           Mygraph.FillEllipse(Brushes.Black, CurrentPoint.X, CurrentPoint.Y, 5, 5)
           Mygraph.DrawLine(Mypen2, Oldpoint, CurrentPoint)
           Oldpoint = CurrentPoint
       Next

0 пользователя(ей) сказали спасибо:

#2
Kato
  • Статус: Легенда
  • Сообщения: 4465
  • Карма: 7
  • Возраст: 35
  • Пол:
Поставь -x и -y в ответах. График перевернется. Если хочешь чтобы он рисовал график вверх, то отнимай а не прибавляй к x и y своему...


Трям

0 пользователя(ей) сказали спасибо:

#3
Biggreen
  • Статус: Патриот
  • Сообщения: 883
  • Карма: 72
  • Возраст: 45
  • Пол:
Вот я.... а я всё какие то формулы пытался вывести :D действительно при проставлении -"у" это чудо наконецто повернулось правильно :-D Спасибо за вывод из ступора

CurrentPoint.Y = 220 + (-Y * 140) вот так вышло правильно4


P.S

Чуток покопавшись обнаружил альтернативный вариант

Dim Mygraph as Graphics = Me.CreateGraphics
MyGraph.ScaleTransform(1, -1)
Mygraph.TranslateTransform(300, -100)

Авось кому пригодится :-)

0 пользователя(ей) сказали спасибо:

#4
Kato
  • Статус: Легенда
  • Сообщения: 4465
  • Карма: 7
  • Возраст: 35
  • Пол:
Все гениальное просто :)


Трям

0 пользователя(ей) сказали спасибо:

#5
mani
  • Статус: Говорун
  • Сообщения: 467
  • Карма: 7
  • Возраст: 42
  • Пол:
А на асме слабо забацать ? :)

0 пользователя(ей) сказали спасибо:

Пользователи читающие эту тему: 2

1 пользователь, 1 гость