Форум программистов, компьютерный форум CyberForum.ru

Многоугольник в пространстве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файлами (программа,которая открывала бы файл и заменяла в нём комбинации 2 пробела на 1 пробел, строчные буквы после ' .' и ' ' на заглавные) http://www.cyberforum.ru/cpp-beginners/thread811594.html
Здравствуйте! Помогите пожалуйста, нужно написать программу,которая открывала бы файл и заменяла в нём комбинации 2 пробела на 1 пробел, строчные буквы после ' .' и ' ' на заглавные. Читала,что нужно использовать операцию Uppercase, но не пойму как.
C++ вывести слова - анаграммы из словаря, состоящего из пар слов(при чтении в обратном порядке образуется другое слово) Ребят, помогите пожалуйста написать прогу на С++=(в задании не было сказано что бы считывало с файла, поэтому, можно все, прямо в проге сделать)) вывести слова - анаграммы из словаря, состоящего из пар слов(при чтении в обратном порядке образуется другое слово)Например: "сев-вес","маг-гам",полк-клоп". http://www.cyberforum.ru/cpp-beginners/thread811566.html
C++ Переделать код программы для Borland++?
#include<iostream> #include<fstream> #include<string> using namespace std; void main() { int kol={0,0}, pozit=-1; string str, filename={"1.txt","2.txt","3.txt","4.txt","5.txt","6.txt","7.txt","8.txt","9.txt","10.txt",}, rezult; fstream file;
C++ работа с .txt C++
Подскажите, как в С++ открыть .txt файл и прочитать каждое слово в каждой строке. Большое спасибо!
C++ Написать программу, в которой будут объявлены структуры Points и Line http://www.cyberforum.ru/cpp-beginners/thread811531.html
1. Написать программу, в которой будут объявлены структуры Points и Line, создан динамический массив объектов Line и нарисованы все объекты, занесенные в массив
C++ Отбрасывание незначащих нулей как сделать чтобы программа отбрасывала незначащие нули после запятой в строке (string) Например вводим строку a = 156,870000000000 а на выводе получаем а = 156,87 подробнее

Показать сообщение отдельно
Asker
115 / 103 / 11
Регистрация: 18.12.2010
Сообщений: 378
19.03.2013, 09:43  [ТС]     Многоугольник в пространстве
Кто-нибудь знает, в какой программе можно построить несколько 3D точек, чтобы посмотреть чисто визуально, правильно программа работает или нет?

Добавлено через 53 минуты
При помощи Excel построил точки, на правду похоже, поэтому задача решена выложил сюда, может быть, она кому-нибудь пригодится
Чтобы это сделать, пришлось вспомнить, что такое правильный многоугольник, его уравнения, нормированные векторы, матрица поворота и как умножать матрицы.
C++
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
#include <iostream>
#include <math.h>
using namespace std;
#define pi  3.141592653589793238462643383279502884197169399375 
const int n = 10;
const int r = 15;
 
struct Point3d // Структура точки в трёхмерном пространстве
{long double x, y, z;};
 
long double qw(long double k) {return k*k;} // возведение в квадрат
 
int main()
{
Point3d A, B, a[n]; // Массив из всех вершин n-угольника
long double R = 15, // радиус описанной около многоугольника окружности
            AB,     // Это длина вектора AB
            p, q, r,// Это координаты нормированного радиус-вектора
            t;      // Это для промежуточных вычислений (оптимизация извлечения кв. корня)
 
A.x = 5;  // AB - любой 
A.y = 3;  // радиус-вектор
A.z = -4; // от балды
B.x = 7;  //  
B.y = 2;  // 
B.z = -6; // 
 
AB = sqrt(qw(B.x-A.x)+qw(B.y-A.y)+qw(B.z-A.z)); //находим длину вектора AB
 // делаем нормированный вектор n(p, q, r):
p = (B.x-A.x)/AB;
q = (B.y-A.y)/AB;
r = (B.z-A.z)/AB;
// промежуточные вычисления :
t = sqrt(p*p+q*q);
// формируем обратную матрицу:
long double M[3][2] = 
    {r*p/t,  -q/t, 
     r*q/t,   p/t, 
      -t,      0};
long double T[2]; // временная матрица
// По идее, там должно быть 3 элемента: x, y и Z. Но z у нас изначально равен 0,
// поэтому я его убрал
 
for (int i=0; i<n; i++) // 
{
T[0]=R*cos(2*pi*i/n); // строим в плоскости по формуле из Википедии
T[1]=R*sin(2*pi*i/n); //
 
a[i].x = T[0]*M[0][0] + T[1]*M[0][1] + A.x; // поворачиваем, используя
a[i].y = T[0]*M[1][0] + T[1]*M[1][1] + A.y; // умножение матриц
a[i].z = T[0]*M[2][0] + T[1]*M[2][1] + A.z; //
 
cout << "Point " << i+1 << " : (" << a[i].x << "; " << a[i].y << "; " << a[i].z << ");\n";
}
 
system("pause");
return 0;
}
Мучался несколько дней, а кода - меньше листа

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