#include <bits/stdc++.h>
using namespace std;
double k[100010]={0};
double o[100010]={0};
int main() {
int n,m;
cin>>n>>m;
for(int i=0;i<100010;i++)k[i]=1;
vector<pair<int,double> >a;
a.push_back({0,0});
for(int i=1;i<=n;i++){
int m1;
double m2;
cin>>m1>>m2;
a.push_back({m1,m2});
if(m1==1){
k[i]=m2;
}else o[i]=m2;
}
for(int i=1;i<=n;i++){
k[i]=k[i]*k[i-1];
o[i]=o[i]+o[i-1];
}
//cout<<k[1]<<" "<<o[1];
//cout<<"1"<<endl;
double sum1=0,sum2=0;
for(int i=0;i<m;i++){
int a1,a2;
double b1,b2;
cin>>a1>>a2>>b1>>b2;
// cout<<"k[a2]="<<k[a2]<<" k[a1-1]="<<k[a1-1]<<endl;
// cout<<"o[a2]="<<o[a2]<<" o[a1-1]="<<o[a1-1]<<endl;
sum1=k[a2]/k[a1-1];
sum2=o[a2]-o[a1-1];
//cout<<sum1<<" "<<sum2<<endl;
//1 1
//1 0.716
//1 1 159430 -511187
double x=b1,y=b2;
b1=x*cos(sum2)-y*sin(sum2);
b2=x*sin(sum2)+y*cos(sum2);
b1=b1*sum1;
b2=b2*sum1;
printf("%.3lf %.3lf\n",b1,b2);
}
}
坐标变换(其二)( 202309-2
最新推荐文章于 2024-03-21 10:46:42 发布