Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синусоида+буквы по ней, нужно нарисовать синусоиду 
:(
    Опции темы
Сарт
Дата 7.1.2007, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Люди помогите=) Нужно в окошке нарисовать синусоиду(но это ерунда по большому счету), и по этой синусоиде выводить буквы, вводимые с клавиатуры...
И тут у меня запара..как рассчитать углы? может кто нить подскажет?
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
WERITAS
Дата 7.1.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



запускаешь координату Х, на выходе получаешь координату Y по синусу, задавая амплитуду и  смещение.

Цитата
может кто нить подскажет? 

геометрию учить  smile 



--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
Сарт
Дата 7.1.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



А подсказать формулу??
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
WERITAS
Дата 7.1.2007, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Какую? Синуса?  smile 

Y=A*sin(wX+b)

Амплитуду, смещение и частоту ты сам задаешь smile 

Это сообщение отредактировал(а) WERITAS - 7.1.2007, 13:12


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
Сарт
Дата 7.1.2007, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Гм...все равно не догоняю как должна формула выглядеть в итоге(для букв) smile  smile 
 smile  smile

Добавлено @ 13:26 
если скажем начальная точка (180;180)
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Sartorius
Дата 7.1.2007, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



 Координаты центра буквы - точки на синусоиде. угол наклона = atan(первой производной) + pi/2
PM MAIL ICQ   Вверх
Сарт
Дата 7.1.2007, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Спасибо.
А расчет между точками на синусоиде делать как расстояние между буквами+ 2* расстояние до центра?
+ как проще поднять буквы над линией синусоиды?
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Сарт
Дата 7.1.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Народ, неужели никто не сталкивался??
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
KpoHyc
Дата 7.1.2007, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 23.12.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 5



Код

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <graphics.h>
#include <dos.h>
#define  koef 100          //размер графика - чем меньше тем меньше график

void axis ( void )         //процедура выводит оси
    {
    int i;
    setcolor(WHITE);       //устонавливает цвет осеей
    line( -getmaxx(), 0, getmaxx(), 0 ); //выводит линии указывается точка начала и конца.
    for (i=-100; i <=getmaxy(); i++) line( -5, i*koef, 5, i*koef); //черточки)))
    line( 0, -getmaxy(), 0, getmaxy() ); // line( х1, у1, х2, у2 );
    for (i=-20; i <=getmaxy(); i++) line( i*koef, 5, i*koef, -5);
    }
int function (int x)       //функция которая возвращает у в зависимостти от у)) менять следует именно ее  - если
    {
    int y;
    y = koef * ( ( 1/pow(2, x) ) + sin (2 * x) );
    return y;
    }


int main(void)
{
     int gdriver = DETECT, gmode, errorcode;  //переменный необходимые для графики
     int x, bx=1;

     initgraph(&gdriver, &gmode, ""); // вот хз - первые и второе не знаю, видимо просто ссылки на переменные необходимые, третье - путь к EGAVA.BGI
     errorcode = graphresult();   // проверяет как была графика инициализирована

     if (errorcode!=grOk)  //если появилась ошибка
     {                     //выводит сообщение об ошибке с указанием номера кода ошибки
        printf("Graphics error: %s\n", grapherrormsg(errorcode));
            printf("Press any key to halt:");
        getch();
        exit(1);
     }

     setviewport(getmaxx()/8, getmaxy()/2, getmaxx(), getmaxy(), 0);  //устанавливает новый центр координат
     axis();               //выводим оси с черточками)) одна черточка - одна единица

     setcolor(RED);        //уст красный цвет
     circle(0, 0 , koef/2);//выводим круг в точке (0,0) и радиусом koef/2 - потому что функция не может принимать значение равное нулю.

    for (x =1; x <= getmaxx(); x++)
     {
    setcolor(GREEN);   //устонавливаем зеленый для линий
    line( bx*koef, -function(bx), x*koef, -function(x) );// соединяет предпоследнюю точку с настоящей
    setcolor(YELLOW);  //желтый
    circle( x*koef, -function(x), koef/5 ); //выводит круги вокруг значащих точек
    bx=x;              // отвечает за предпослежний х
     }

     getch();
     closegraph();         //закрывает работы с графикой
     return 0;
}



Все завязано на одной функции -писал когда то...плавный график получить можно, но лень...а буквы ставить над координатами вычисляемых точек...

Это сообщение отредактировал(а) KpoHyc - 7.1.2007, 21:01
--------------------
AScript + Pascal + C -> C++ ->C#Adobe Photoshop 7.0/CS 2.0 + GIMP+ Visual Studio .NET(sp1)/2005 pro(sp1)
PM MAIL ICQ Skype GTalk Jabber   Вверх
Сарт
Дата 7.1.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Гм...но тут не под винду=( может у кого есть под винду?=)
Выкладываю задание полностью=)



Это сообщение отредактировал(а) Сарт - 7.1.2007, 21:59

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  _________Microsoft_Word.doc 36,50 Kb
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Axxent
Дата 8.1.2007, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 2
Всего: 5



А чего не понятно-то? Как получить координаты букв - понятно?
Код

for(int x=0; x<800; x+=textsize) y = sin(period*x)+offset;

Или тебе еще буквы надо с наклоном? Наклон = производная, по-нашему косинус. Только он в радианах вернется, и его придется конвертить в градусы. Кроме всего тебе еще придется накреатить шрифтов через CreateFont или CreateFontIndirect, потому что по-другому угол наклона текста не задашь. Я бы массив таких фонтов сделал а потом по нему шпарил при вводе текста. Но графика с такими требованиями получится быстрая ((% Хотя без перерисовки мож и ничо.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.