#include <stdio.h>
typedef struct
{
signed long x0; signed long y0; signed long z0;
signed long x1; signed long y1; signed long z1;
signed long x2; signed long y2; signed long z2;
signed long x3; signed long y3; signed long z3;
} Treug_t;
//решение уравнения плоскости
signed long ReshUrPlsk(Treug_t* s)
{
return (signed long)((
((float)((s->x0)-(s->x1)))
*
(((s->y1)-(s->y2))
*
((s->z3)-(s->z1))
+
((float)((s->z2)-(s->z1)))
*
((s->y3)-(s->y1)))
+
((float)((s->y0)-(s->y1)))
*
((s->x2)-(s->x1))
*
((s->z3)-(s->z1))
-
((float)((s->x3)-(s->x1)))
*
((float)((s->z2)-(s->z1)))
)
/
(
((float)((s->x2)-(s->x1)))
*
((s->y3)-(s->y1))
-
((float)((s->x3)-(s->x1)))
*
((s->y2)-(s->y1))
))
+
(s->z1)
;
//return (s->z0);
}
int main(void) {
// your code goes here
Treug_t asdf;
asdf.x1=1000;
asdf.y1=4000;
asdf.z1=0;
asdf.x2=4000;
asdf.y2=1000;
asdf.z2=1000;
asdf.x3=4000;
asdf.y3=4000;
asdf.z3=0;
for(int y=0;y<5000;y=y+250)
{
for(int x=0;x<5000;x=x+250)
{
asdf.x0=x;
asdf.y0=y;
printf(" %04d", ReshUrPlsk
(&asdf
));
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIHN0cnVjdCAKICB7CiAgc2lnbmVkIGxvbmcgeDA7ICBzaWduZWQgbG9uZyB5MDsgIHNpZ25lZCBsb25nIHowOwogIHNpZ25lZCBsb25nIHgxOyAgc2lnbmVkIGxvbmcgeTE7ICBzaWduZWQgbG9uZyB6MTsKICBzaWduZWQgbG9uZyB4MjsgIHNpZ25lZCBsb25nIHkyOyAgc2lnbmVkIGxvbmcgejI7CiAgc2lnbmVkIGxvbmcgeDM7ICBzaWduZWQgbG9uZyB5MzsgIHNpZ25lZCBsb25nIHozOwogIH0gVHJldWdfdDsKCi8v0YDQtdGI0LXQvdC40LUg0YPRgNCw0LLQvdC10L3QuNGPINC/0LvQvtGB0LrQvtGB0YLQuApzaWduZWQgbG9uZyBSZXNoVXJQbHNrKFRyZXVnX3QqIHMpCiAgewogIHJldHVybiAoc2lnbmVkIGxvbmcpKCgKICAgICAgICAgICgoZmxvYXQpKChzLT54MCktKHMtPngxKSkpCiAgICAgICAgICAqCiAgICAgICAgICAoKChzLT55MSktKHMtPnkyKSkKICAgICAgICAgICoKICAgICAgICAgICgocy0+ejMpLShzLT56MSkpCiAgICAgICAgKwogICAgICAgICAgKChmbG9hdCkoKHMtPnoyKS0ocy0+ejEpKSkKICAgICAgICAgICoKICAgICAgICAgICgocy0+eTMpLShzLT55MSkpKQogICAgICAgICsKICAgICAgICAgICgoZmxvYXQpKChzLT55MCktKHMtPnkxKSkpCiAgICAgICAgICAqCiAgICAgICAgICAoKHMtPngyKS0ocy0+eDEpKQogICAgICAgICAgKgogICAgICAgICAgKChzLT56MyktKHMtPnoxKSkKICAgICAgICAtIAogICAgICAgICAgKChmbG9hdCkoKHMtPngzKS0ocy0+eDEpKSkKICAgICAgICAgICoKICAgICAgICAgICgoZmxvYXQpKChzLT56MiktKHMtPnoxKSkpICAKICAgICAgICApCiAgICAgICAgLwogICAgICAgICgKICAgICAgICAgICgoZmxvYXQpKChzLT54MiktKHMtPngxKSkpCiAgICAgICAgICAqCiAgICAgICAgICAoKHMtPnkzKS0ocy0+eTEpKQogICAgICAgIC0KICAgICAgICAgICgoZmxvYXQpKChzLT54MyktKHMtPngxKSkpCiAgICAgICAgICAqCiAgICAgICAgICAoKHMtPnkyKS0ocy0+eTEpKQogICAgICAgICkpCiAgICAgICAgKwogICAgICAgIChzLT56MSkKICAgICAgICA7CiAgLy9yZXR1cm4gKHMtPnowKTsKICAKICB9CgppbnQgbWFpbih2b2lkKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgkKVHJldWdfdCBhc2RmOwogIAogIGFzZGYueDE9MTAwMDsKICBhc2RmLnkxPTQwMDA7CiAgYXNkZi56MT0wOwogIAogIGFzZGYueDI9NDAwMDsKICBhc2RmLnkyPTEwMDA7CiAgYXNkZi56Mj0xMDAwOwogIAogIGFzZGYueDM9NDAwMDsKICBhc2RmLnkzPTQwMDA7CiAgYXNkZi56Mz0wOwogIAogIGZvcihpbnQgeT0wO3k8NTAwMDt5PXkrMjUwKQogICAgewogICAgZm9yKGludCB4PTA7eDw1MDAwO3g9eCsyNTApCiAgICAgIHsKICAgICAgYXNkZi54MD14OwogICAgICBhc2RmLnkwPXk7CiAgICAgIAogICAgICBwcmludGYoIiAlMDRkIiwgUmVzaFVyUGxzaygmYXNkZikpOwogICAgICAKICAgICAgfQogICAgcHJpbnRmKCJcblxyIik7IAogICAgfQkKCQoJCgkKCXJldHVybiAwOwp9Cgo=