- Форум
- Тийн интереси и проблеми
- Училище и приятели
- Може ли някой да ми реши 2 задачки на С++
Задача 57. Точка е зададена с координатите си. Да се изобразят на екрана точката и образът й при симетрия спрямо ординатната ос.
Задача 71. За даден паралелепипед да се изчертае сечение през три точки от околните му ръбове.
71 задача.
Нека са дадени три точки - M(x1,y1,z1), N(x2,y2,z2) ,P(x3,y3,z3).
От тук определяме уравнението на равнината като детерминантата на следната матрица A:
x-x1, y-y1, z-z1
x2-x1, y2-y1, z2-z1
x3-x1, y3-y1, z3-z1
Нека тази матрица е еквивалентна на (направим полагания за всичките членове) на матрицата В:
a, b, c
d, e, f
g, h, i
Тогава det(A)=det(B)= a(ei - hf) - d(bi - hc) + g (bf - ec)
От тук получаваме общо уравнение на равнината на сечението от тип Ах+Ву+Cz+D=0
Ще направим една функция, която изчислява А,В,С и D, и ги връща по някакъв начин (в масив примерно).
След това ще направим една функция, която по въведени х,у и z на дадена точка връща true, ако точката е от равнината и false, ако не е. Това става, като провери, дали Ax+By+Cz+D=0. (Ще ползваме предишната функция, за да напишем тази). Нека тази функция е IsOf(x,y,z)
След това ще търсим общите точки на тази равнина с пространството в паралелепипеда. Не знам, дали има по-лесен начин, но това може да се осъществи с 3 цикъла.
Да кажем, че дължината на страните на паралелепипеда е 100пиксела, 50пиксела, 70 пиксела. Също така, нека точка А да бъде с координати А(50,80,110).
Правим следното
for (i=50;i<=50+100;i++)
{
for (j=80;j<=80+50;j++)
{
for (k=110;k<=110+70;k++)
{
if (IsOf(i,j,k)==1)
{Изобразяваме точка с координати (i,j,k);}
}
}
}
Тъй като е двуизмерно чертането, у координатата ще е всъщност z координатата. у координатата пък ще трябва да се намери начин да се изобразява. Тъй като ползваме цели числа за координатите, няма да е удобно да се използва питагоровата теорема и ще трябва да се търси друг пособ, за да се изчисли.
Може би има вариант да въвеждаш А,В,D,A1 на паралелепипедът, по които да го определиш и ползвайки координатите на D да намери зависимост за х и у, но не съм сигурен, как и дали може да се дефинира функция y(x,z) на база на даденото.
Това е алгоритъмът, който успях да измисля, но няма шанс да го реализирам. Прекалено дълго е, за да си го напиша дори за мое собствено домашно.
Има 10 вида хора. Тези, които могат да четат двоичен код и тези, които не могат.
Ми добре благодаря все пак ами другата задача и тя ли е същата?
За другата пресмяташ колко е разстоянието по х от точката до ординатната ос и дали е надясно или наляво (положително или отрицателно разстояние. Ако точката е х, а разстоянието - а, то задачата е да изобразиш точката (х-2а, у) или (х+2а, у). Първият случай е, ако точката е вдясно от ординатната ос, а вторият - ако е отляво.
Не съм работил наскоро с графичните библиотеки и не помня стандартните функции и координатите на оординатната ос (дали е (х,0)).
Доста съм зает в момента и нямам възможност да пиша програмите.
Има 10 вида хора. Тези, които могат да четат двоичен код и тези, които не могат.
Мхм ами ще можеш ли примерно до 28 да ми ги напишеш като програма защото сега както ми ги обесняваш си нямам никаква представа как да ги напрая на програма.![]()