Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Depi
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 5
1

Площадь треугольника

29.05.2010, 21:02. Просмотров 1489. Ответов 2
Метки нет (Все метки)

Помогите с программой которая будет считать площадь треугольника, если задоны вершины треугольника с помощью инструкций SSE3. Зарание благодарен
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2010, 21:02
Ответы с готовыми решениями:

Вычислить площадь треугольника
Помогите пожалуйста, нужна программа в Assemblers которая считает площадь треугольника. Буду очень...

Найти медианы треугольника, сторонами которого являются медианы исходного треугольника
Помогите решить пожалуйста такую задачу: Даны длины a, b и c сторон некоторого треугольника. Найти...

Два треугольника заданы координатами своих вершин A,B,C. Вычислить площадь треугольника и определить какой треугольник имеет большую площадь
Два треугольника заданы координатами своих вершин A,B,C. Вычислить площадь треугольника и...

Найти площадь треугольника KLM, если площадь треугольника ABC равна S
Помогите, пожалуйста, найти площадь треугольника KLM, если площадь треугольника ABC равна S, AL =...

Даны два треугольника. Определить площадь какого треугольника больше. Процедурой
Даны два треугольника. Определить площадь какого треугольника больше. Решить с помощью процедуры :)...

2
Ivan_32
28 / 24 / 0
Регистрация: 03.02.2010
Сообщений: 66
30.05.2010, 07:35 2
Assembler
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
81
82
83
84
85
format PE Console
entry Main
 
include '%fasminc%\win32a.inc'
include '%fasminc%\equates\kernel32.inc'
include '%fasminc%\equates\gdi32.inc'
include '%fasminc%\equates\user32.inc'
 
section '.data' data readable writeable
    
    align 16
    pp0   dd -1.0,  2.0,  2.0,  0.0
    pp1   dd  3.0, -3.0,  4.0,  0.0
    pp2   dd  1.0,  0.0,  9.0,  0.0
    vecAB  dd  0,0,0,0
    vecAC  dd  0,0,0,0
    
    buff dd 0.0,0.0,0.0,0.0
    diver dd 2.0
    
    result dq 0.0
section '.code' code readable writeable executable
 
Main:
    ; C = A2*B3-A3*B2 : A3*B2-A1*B3 : A1*B2-A2*B1
    movaps xmm0,dqword[pp0] ; xmm0 = pp0
    movaps xmm1,dqword[pp1] ; xmm1 = pp1
    subps xmm1,xmm0         ; xmm1 = vecAB = pp1 - pp0
    movaps dqword[vecAB],xmm1 
    movaps xmm1,dqword[pp2] ; xmm1 = pp2
    subps xmm1,xmm0         ; xmm1 = vecAC = pp2 - pp0
    movaps dqword[vecAC],xmm1
    
    movss xmm0,[vecAB+4] ;
    mulss xmm0,[vecAC+8] ; xmm0 = A2 * B3
    movss xmm1,[vecAB+8] ;
    mulss xmm1,[vecAC+4] ; xmm1 = A3 * B2
    subss xmm0,xmm1      ; xmm0 = A2 * B3 - A3 * B2
    movss [buff],xmm0    
    
    movss xmm0,[vecAB+8] ;
    mulss xmm0,[vecAC+4] ; xmm0 = A3 * B2
    movss xmm1,[vecAB+0] ; 
    mulss xmm1,[vecAC+8] ; xmm1 = A1 * B3
    subss xmm0,xmm1      ; xmm0 = A3 * B2 - A1 * B3
    movss[buff+4],xmm0
    
    movss xmm0,[vecAB+0] ;
    mulss xmm0,[vecAC+4] ; xmm0 = A1 * B2
    movss xmm1,[vecAB+4] ;
    mulss xmm1,[vecAC+0] ; xmm1 = A2 * B1
    subss xmm0,xmm1      ; xmm0 = A1 * B2 - A2 * B1
    movss [buff+8],xmm0  
    
    movaps xmm0,dqword[buff] ; xmm0 = vecA * vecB 
    mulps xmm0,xmm0          ; xmm0 = vecA * vecB 
    movaps dqword[buff],xmm0 
    
    
 
    movss xmm0,[buff]    ; xmm0 = C1^2
    addss xmm0,[buff+4]  ; xmm0 = C1^2 + C2^2
    addss xmm0,[buff+8]  ; xmm0 = C1^2 + C2^2 + C3^3
    sqrtss xmm0,xmm0     ; xmm0 = abs(vector_C)
    divss xmm0,[diver]   ; xmm0 = 1/2 * abs( AB*AC )
    
    cvtss2sd xmm0,xmm0
    movsd [result],xmm0
    
    cinvoke printf,"%f",dword[result],dword[result+4]
    cinvoke getch
    invoke  ExitProcess, 0
    
section '.idata' import data readable writeable
 
  library kernel32,'KERNEL32.DLL',\
      user32,'USER32.DLL',\
      crtdll,'CRTDLL.DLL',\
      msvcrt,'MSVCRT.DLL'
      
  import msvcrt,\
      getch,'_getch'
  include '%fasminc%/apia/kernel32.inc'
  include '%fasminc%/apia/user32.inc'
  include '%fasminc%/apia/crtdll.inc'
dqword это аналог xmmword-а - 16 байт.
Результаты правда барахлят(что то никак не могу найти время разобраться с принципом работы FP32. Там какие то проблемы при расчетах, которые вызывают весьма весомые погрешности.
Лучше использовать наверно сразу FP64. Да медленней в 1.5-2 раза, но надежней и точней в разы.
1
Depi
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 5
30.05.2010, 11:39  [ТС] 3
Большое спасибо, буду разбираться сидеть
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2010, 11:39

Зная длины трех сторон треугольника, вычислить площадь и периметр треугольника
Зная длины трех сторон треугольника, вычислить площадь и периметр треугольника.

Известна гипотенуза и прилежащий угол прямоугольного треугольника. Найти площадь треугольника
Нужна ваша помощь, завтра экзамен :с Разработать программу, для которой создать интерфейс,...

Докажите, что площадь треугольника, составляет площади ортоцентрического треугольника
Докажите, что площадь треугольника, имеющего вершинами середины высот треугольника, составляет...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru