Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

нарисовать стрелку

3.2K
04 апреля 2008 года
Гудвин
186 / / 22.12.2007
Народ, подскажите как стрелку нарисовать. то есть известны две точки отрезка, нужно вокруг второй нарисовать треугольник повернутый на угол равный углу этого отрезка. :confused:
3.2K
04 апреля 2008 года
rihkov
42 / / 30.10.2005
Что то я на счет треугольника ничего не понял что имеется в виду, что косается стрелки (если я все правильно понимаю тебе нужно вычислить вторую координату в зависимости от угла) вот примерно так:

const int lh = 100;//Длина стрелки
int xc = 244;//Центр по X (начало стрелки)
int yc = 244;//Центр по Y (начало стрелки)
double u;

u = var;//Переменная задающая угол
Ledgrid->Canvas->MoveTo(xc,yc);

X1 = xc + (lh*cos(u));
Y1 = yc - (lh*sin(u));

Ledgrid->Canvas->Pen->Color = clRed;
Ledgrid->Canvas->LineTo(X1, Y1);
3.2K
04 апреля 2008 года
Гудвин
186 / / 22.12.2007
мне известны координаты отрезка AB, получается мне нужно вычислить две точки C и D, которые вместе с точкой B образуют маленький треугольник CBD, для которого AB является биссектрисой. я так понимаю здесь нужно как-то угол сначала определить меж AB и осью иксов
3.2K
05 апреля 2008 года
Гудвин
186 / / 22.12.2007
:eek: неужели єто такая сложная задача?
34K
06 апреля 2008 года
Carbon
17 / / 21.03.2008
Цитата: Гудвин
:eek: неужели єто такая сложная задача?



Нет. Не сложная. Можно напрямую рассчитать координаты 2-ч точек треугольника, а можно считать, что отрезок лежит на оси Ox, а затем осуществить поворот координат.
ЗЫ Угол у треугольника какой?

3.2K
07 апреля 2008 года
Гудвин
186 / / 22.12.2007
с углом тоже сложно :rolleyes: углов я вообще не знаю. у меня изначально есть к примеру только две точки, точка А(25,50) и точка B(57,80), по ним на экране рисуется отрезок и мышкой отдельно каждую из этих точек можно передвигать. так вот как не отрезок а стрелку нарисовать то? может угол меж AB и осью иксов как-то через arcsin arccos вычислять? я так примерно прикинул но глючно чтот получается
3.2K
07 апреля 2008 года
Гудвин
186 / / 22.12.2007
о и в правду может стоить эти точки C и D рассматривать как отрезок перпендикулярный отрезку AB? как построить прямую перпендикулярную данной?
2.1K
07 апреля 2008 года
wAngel
129 / / 23.11.2004
Почитайте краткий курс аналитической геометрии (Ильин, Позняк и иже с ними), там все написано.
3.2K
07 апреля 2008 года
Гудвин
186 / / 22.12.2007
даа... тяжко это. надо было в школе изучать :D
2.1K
07 апреля 2008 года
wAngel
129 / / 23.11.2004
Специально для ленивых...
Пункт номер два
25K
08 апреля 2008 года
San_
42 / / 03.10.2007
Код:
void diagram::paintline(int x1, int y1, int x2, int y2, TColor l_color, AnsiString sign){
        px_->Pen->Width=1;
        px_->Pen->Color=l_color;

    px_->MoveTo(left+xc+x1,top+yc-y1); px_->LineTo(left+xc+x2,top+yc-y2);

        if ( sqrt( pow((x2-x1)*1.0,2)+pow((y2-y1)*1.0,2) ) < dl ) return;

    double alf;
        int dx1,dy1,dx2,dy2,dx3,dy3;
        int x2a = x2-x1, y2a = y2-y1;
        if (x2a) alf=fabs(atan( (float)y2a/x2a ));
            else alf=M_PI_2;

        dx1 = dl*cos(alf + yg); dy1 = dl*sin(alf + yg);
        dx2 = dl*cos(alf - yg); dy2 = dl*sin(alf - yg);
        dx3 = 2*dl*cos(alf); dy3 = 2*dl*sin(alf);

        if ( x2a<0 ) {dx1= -dx1; dx2 = -dx2; dx3 = -dx3; };
        if ( y2a<0 ) {dy1= -dy1; dy2 = -dy2; dy3 = -dy3; };

        px_->MoveTo(left+xc+x2,top+yc-y2); px_->LineTo(left+xc+(x2-dx1),top+yc-(y2-dy1));
        px_->MoveTo(left+xc+x2,top+yc-y2); px_->LineTo(left+xc+(x2-dx2),top+yc-(y2-dy2));
        px_->TextOutA(left+xc+x2-dx3, top+yc-y2+dy3, sign);
};


пару комментариев
left, top - точка на форме - центр системы координат (обычной), в которой рисуется линия
px_ - указатель на TCanvas, санва от формы берется
dl примерно равно 20 эт длина уса стрелки что ли , не помню

вот
#define dl 20
#define yg M_PI/12.0
3.2K
08 апреля 2008 года
Гудвин
186 / / 22.12.2007
Спасибо! :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог