Форум программистов, компьютерный форум, киберфорум
Fortran
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
1

Координаты точек по окаймлению профиля

23.03.2014, 23:13. Показов 2402. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Помогите Пожалуйста!
Данный код выводит на экран изображения руля Жуковского:
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type (windowconfig) wc
 
 d=GETWINDOWCONFIG(wc); p=wc.numxpixels; q=wc.numypixels
 step_px=2.0*Xmax/p; step_qy=2.0*Ymax/q
 
 !call number_pi (pi, pi_2, RAD)
 
    do i=0,p,1
        do j=0,q,1
        z=dcmplx(dble(+Xmin+i*step_px), dble(Ymin+j*step_qy))
       dzeta=conform_Joukowsky(z)/R_
        if (cdabs(dzeta) <=1 ) status=setpixel(i,j)
        end do
    end do
Координаты точек по окаймлению профиля

Мне нужно, чтобы программа выдавала координаты точек по окаймлению профиля! Как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2014, 23:13
Ответы с готовыми решениями:

У квадрата ABCD на плоскости известны координаты двух противоположных вершин - точек A и C. Найти координаты точек B и
У квадрата ABCD на плоскости известны координаты двух противоположных вершин - точек A и C. Найти...

Дано координаты точек x1x2x3. и уравнение прямой y=ax+b вывести масив С в котором координаты точек этой прямой
Пытался сделать так потому что забыл как решение примера занести в масив на выводе огромные числа...

Найти координаты точек С, если известны координаты точек А
в треугольнике ОАВ проведена медиана ОС. Найти координаты точек С, если известны координаты точек А...

Заданы координаты десяти точек плоскости и координаты точки-полюса
Всем привет! Нужна ваша помощь)Нужно писать программу на с# -Заданы координаты десяти точек...

39
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
28.03.2014, 15:46  [ТС] 21
Author24 — интернет-сервис помощи студентам
Krasme, это три вихря с заданной циркуляцией!
0
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
29.03.2014, 16:12  [ТС] 22
Krasme, как можно к профилю пририсовать прямую линию в чёрной точке, чтобы длину линии и угол её отклонения от горизонтального положения мы задавали сами?! Если Вам не сложно, помогите Пожалуйста мне это сделать!
Координаты точек по окаймлению профиля
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
29.03.2014, 16:20 23
Лучший ответ Сообщение было отмечено Merhaba как решение

Решение

Merhaba, прям целый курсовик...
подумаю на досуге. может быть...
улетаю на профиле "Метла"
1
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
29.03.2014, 19:36 24
Merhaba, держите
Координаты точек по окаймлению профиля

Кликните здесь для просмотра всего текста
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        status = setcolor(12)
    !do ib=iminb,imaxb
    !  status=setpixel(ib,jb)
    !end do
    !do jc=jminc,jmaxc
    !  status=setpixel(ic,jc)
    !end do
    call moveto(iminb,jb,xys)
    d=lineto(imaxb,jb);
    call moveto(ic,jminc,xys)
    d=lineto(ic,jmaxc);
    !=======================
    ! line with angle
    angle=-10*3.14/180;
    dlina=400;
    status = setcolor(0)
    call moveto(iminb,jb,xys)
    d=lineto(iminb+dlina*cos(angle),jb+dlina*sin(angle))
 
    !=======================
обратите внимание на закомментированные строки, ниже новый (более удобный) вариант.
положительный угол по часовой стрелке.
1
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
30.03.2014, 09:00  [ТС] 25
Krasme, Выдаёт:
Fortran
1
Error: There is no matching specific subroutine for this generic subroutine call.   [MOVETO]
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
30.03.2014, 09:05 26
Merhaba, вот весь текст, смотрите, чего не хватает
Кликните здесь для просмотра всего текста
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
subroutine Paint_foil_Gukovsky (Xmax,Ymax,Xmin,Ymin)
 
use msflib
use foil_J
use param
 
!---------------------------------------------------------
INTERFACE
DOUBLE complex FUNCTION conform_Joukowsky(z) result(dzeta)
 
 
use foil_J
use point_
use param
 
complex(8),INTENT(in)::z 
END FUNCTION conform_Joukowsky
END INTERFACE
!---------------------------------------------------------
real(8),intent(in)::Xmin,Ymin, Xmax,Ymax
!-------------------------------------------------------------
logical(4)::d
complex(8)::dzeta, z
integer(4)::i,j,p,q
real(4)   ::step_px, step_qy
 
type (windowconfig) wc
type( XYCOORD ) xys
 d=GETWINDOWCONFIG(wc); p=wc.numxpixels; q=wc.numypixels
 step_px=2.0*Xmax/p; step_qy=2.0*Ymax/q
 
 call number_pi (pi, pi_2, RAD)
 dj=0;di=0; imax=0;imin=p;
    do i=0,p,1
        jmax=0;jmin=q;
        do j=0,q,1
         z=dcmplx(dble(Xmin+i*step_px), dble(Ymin+j*step_qy))
         dzeta=conform_Joukowsky(z)/R_
         if (cdabs(dzeta) <=1.and.cdabs(dzeta)>0.99 ) then
            status=setpixel(i,j)
            !--------------------
            if (jmax<j) jmax=j;             if (jmin>j) jmin=j;
            if (dj<jmax-jmin) then
               dj=jmax-jmin;
               jmaxc=jmax;   jminc=jmin;  ic=i;
            end if
            !--------------------
            if (imax<i) imax=i;             if (imin>i) imin=i;
            if (di<imax-imin) then
               di=imax-imin;
               imaxb=imax;   iminb=imin;  jb=j;
            end if
         end if
        end do
    end do
    !-----------------
   write (222,*) dj,ic,jmaxc,jminc
   write (222,*) di,jb,imaxb,iminb
    status = setcolor(12)
    !do ib=iminb,imaxb
    !  status=setpixel(ib,jb)
    !end do
    !do jc=jminc,jmaxc
    !  status=setpixel(ic,jc)
    !end do
    call moveto(iminb,jb,xys)
    d=lineto(imaxb,jb);
    call moveto(ic,jminc,xys)
    d=lineto(ic,jmaxc);
    !=======================
    ! line with angle
    angle=-10*3.14/180;
    dlina=400;
    status = setcolor(0)
    call moveto(iminb,jb,xys)
    d=lineto(iminb+dlina*cos(angle),jb+dlina*sin(angle))
 
    !=======================
return
end subroutine Paint_foil_Gukovsky
1
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
30.03.2014, 09:42  [ТС] 27
Krasme, попробую написать программу обтекания профиля с такой штукой...

Добавлено через 2 минуты
Krasme, как-нить можно узнавать координаты точек этой прямой?
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
30.03.2014, 09:45 28
Цитата Сообщение от Merhaba Посмотреть сообщение
как-нить можно узнавать координаты точек этой прямой?
а эта формула ни о чем не говорит?
Fortran
1
d=lineto(iminb+dlina*cos(angle),jb+dlina*sin(angle))
0
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
30.03.2014, 09:49  [ТС] 29
Krasme, отсюда мы получим координаты точек конца прямой!
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
30.03.2014, 09:53 30
Merhaba, ну зачем так буквально читать? это наводка..
а код можно записать след.образом:
Fortran
1
2
3
4
do dl=1,dlina
idl=iminb+dl*cos(angle)
jdl=jb+dl*sin(angle)
end do
написано навскидку, без проверки.. сами, сами, сами!
1
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
30.03.2014, 21:18  [ТС] 31
Krasme, как можно сделать так, чтобы прямая появлялась и исчезала по нашему требованию?
Мне кажется, что тут нужна логическая переменная.
Пытался написать такой код, но программа с ним не работает:
Fortran
1
2
3
4
5
logical :: flap 
if flap =.TRUE. then
call moveto(iminb,jb,xys)
    d=lineto(iminb+dlina*cos(angle),jb+dlina*sin(angle))
end if
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
30.03.2014, 21:23 32
Fortran
1
2
3
4
5
6
logical :: flap =.true.
...
if (flap) then
call moveto(iminb,jb,xys)
    d=lineto(iminb+dlina*cos(angle),jb+dlina*sin(angle))
end if
1
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
12.04.2014, 21:22  [ТС] 33
Krasme, как можно найти координаты точки "прикрепления" прямой линии к профилю в системе координат wxycoord ?
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
12.04.2014, 21:28 34
Merhaba,
Цитата Сообщение от Merhaba Посмотреть сообщение
координаты точки "прикрепления" прямой линии к профилю
не понимаю...
0
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
12.04.2014, 21:47  [ТС] 35
Krasme, координату черной точки в системе координат wxycoord

Добавлено через 7 минут
Krasme, call moveto(iminb,jb,xys)
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
12.04.2014, 22:18 36
Merhaba, на цап-царап..
Fortran
1
call getwindowcoord(iminb,jminc,wxys)

Не по теме:

никогда не занималась различными системами координат, потому ни о каких преобразованиях понятия не имею :mda:

1
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
17.04.2014, 17:39  [ТС] 37
Krasme, А можно как-нить вместо прямой линии, от точки (iminb,jb), нарисовать сигмент профиля, выделенный черным цветом и управлять углом его отклонения?
Координаты точек по окаймлению профиля
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
17.04.2014, 18:09 38
Цитата Сообщение от Merhaba Посмотреть сообщение
А можно как-нить вместо прямой линии, от точки (iminb,jb), нарисовать сигмент профиля, выделенный черным цветом
думаю, что можно...
Цитата Сообщение от Merhaba Посмотреть сообщение
управлять углом его отклонения
не понимаю, что за угол отклонения..
0
3 / 3 / 5
Регистрация: 05.03.2011
Сообщений: 270
17.04.2014, 18:22  [ТС] 39
Krasme, Для линии мы сами задаём угол отклонения - angle
Fortran
1
2
call moveto(iminb,jb,xys)
    d=lineto(iminb+dlina*cos(angle),jb+dlina*sin(angle))
Добавлено через 1 минуту
Krasme, у Вас есть какие-нить мысли, как это можно сделать?
0
6830 / 4890 / 2065
Регистрация: 02.02.2014
Сообщений: 13,048
17.04.2014, 18:28 40
Merhaba, навскидку - дополнительный двумерный массив.. но это будет на основе полученного профиля, но чтобы отдельно, да еще и угол менять.. не понимаю как.. та линия хоть строится самостоятельно.. работа уже не ограничивается одной графикой, надо вникать в полную задачу. мне не очень-то хочется
1
17.04.2014, 18:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2014, 18:28
Помогаю со студенческими работами здесь

Вести Координаты двух точек на плоскости и определить координаты середины отрывка соединяющих их
Пожалуйста помогите написать программу , ;)

Даны координаты точки (a,b). Найти координаты остальных точек (c,d),(e,j)
Даны координаты точки (a,b). Найти координаты остальных точек (c,d),(e,j). На рисунке обозначены...

N точек заданы полярными координатами. Вычислить декартовые координаты точек
вот так звучит условие: N точек заданы полярными координатами. Вычислить декартовые координаты...

Ввести координаты 10 точек на плоскости и определить в какой из четвертей больше всего точек
Всем привет. Есть задание ввести координаты 10 точек. Не без помощи интернета смог написать код,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru