Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- #define ld long double
- #define eps 10E-7
- # define M_PI 3.14159265358979323846 /* pi */
- struct Vector{
- ll x ;
- ll y ;
- };
- // Возвращаем вектор из двух точеу E - B
- Vector getVectorEB (Vector E , Vector B) {
- Vector ans ;
- ans.x = E.x - B.x;
- ans.y = E.y - B.y;
- return ans;
- }
- Vector getAddEB (Vector E , Vector B) {
- Vector ans ;
- ans.x = E.x + B.x;
- ans.y = E.y + B.y;
- return ans;
- }
- // Возвращаем векторное произведение
- ll getVectorProduct(Vector a , Vector b) {
- return a.x * b.y - a.y * b.x;
- }
- // Возвращаем скалярное произведение
- ll getScalarProduct (Vector a , Vector b) {
- return a.x * b.x + a.y * b.y;
- }
- // Возвращаем длинну между двумя векторами
- ll getLong (Vector a , Vector b) {
- return sqrt( (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
- }
- // Возвращаем угол между двумя векторами
- ll getAngle (Vector a ,Vector b) {
- ll sc = getScalarProduct(a,b);
- ll ve = getVectorProduct(a,b);
- return atan2( ve , sc) / M_PI * 180;
- }
- // Возвращает true если есть коллизия полигона и точки ,полигон массив структуры vector
- int main()
- {
- //ifstream file("data.txt");
- ll DX,DY,AX,AY,BX,BY,BVX,BVY,AVY,AVX;
- cin>>AX>>AY>>DX>>DY>>BX>>BY;
- Vector a;
- Vector b;
- Vector d;
- a.x = AX;
- a.y = AY;
- b.x = BX;
- b.y = BY;
- d.x = DX;
- d.y = DY;
- //a = getVectorEB(a,d);
- // cout<< getAngle(getVectorEB(d,b) ,getVectorEB(a,b));
- Vector ans ;
- Vector k2,k1;
- k1 = getVectorEB(d,b);
- k2 = getVectorEB(a,b);
- if(abs(getAngle(k1 ,k2)) == 90){
- ans = getAddEB(k1,k2);
- ans = getAddEB(ans,b);
- cout<<ans.x<<" "<<ans.y;
- return 0;
- }
- k1 = getVectorEB(b,d);
- k2 = getVectorEB(a,d);
- if(abs(getAngle(k1 ,k2)) == 90){
- ans = getAddEB(k1,k2);
- ans = getAddEB(ans,d);
- cout<<ans.x<<" "<<ans.y;
- return 0;
- }
- k1 = getVectorEB(d,a);
- k2 = getVectorEB(b,a);
- if(abs(getAngle(k1 ,k2)) == 90){
- ans = getAddEB(k1,k2);
- ans = getAddEB(ans,a);
- cout<<ans.x<<" "<<ans.y;
- return 0;
- }
- //
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement