Jump to content

Синусоида


Recommended Posts

Добрый вечер!

Подскажите как нарисовать синусоиду под углом.

Обычную синусоиду я рисую по формуле y = a + b*sin(cx+d)

А вот как её повернуть допустим под углом не могу найти в инете.

И ещё такой мелочный вопрос.

Представте себе форму, самого обычного цвета(серого), на нем должна рисоваться синусоида, но не просто нарисоваться, а как бы пробежать по форме.

На примере картинки попробую обьяснить

arlz7CA2aC.png

по формуле, синусоида строится по всей длине формы, но я хочу что0бы было видно только отрезок в 50пикселей, т.е. попробуйте себе представить, что когд на форме нарисован отрезок под номером один, то 2 и 3 не видно, когда нарисовался отрезок 2, то 1 и 3 не видно ну и так до конца формы.

Подскажите как лучше всего стирать синусоды на прошедших уже координатах. Я в данный момент делаю следующим образом, когда координата синусоиды по Х больше 51пикселя, то я затираю координату 1 (51 пиксель минус 50 пикселей) и так далее. В принципе меня это устраивало до тех пора пока строилась одна синусоида, но в данный момент у меня на форме строится порядка 500 синусоид одновременно(не спрашивайте зачем), пока ихни значения по Х менше 50 они строятся быстро, но вот как только 51, то прям на глазах скорость падает, оно поянтно почему, потомучто добавилось одно условие и действия. Вот я и спрашиваю может есть какой оптимизированный способ решения данной задачи.

Заранее благодарен!

Link to comment
Share on other sites

Поворот делается по стандартным формулам:

x'=x*cos(A)-y*sin(A)

y'=x*sin(A)+y*cos(A),

где A - угол.

cos и sin для каждой синусоиды можно вычислить, естественно, только один раз.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...