我尝试使用极坐标在两个多项式的R中重现图形。 f1(x)和f2(x)是具有转换的极坐标函数f1(θ)和f2(θ)的两个多项式。目标是从笛卡尔和极坐标函数中获得相同的图形。目前,我只使用极坐标获得多项式的一部分。
x<-seq(0,10,0.001)
f1x<-function(x){
(x-4)*(x-3)+1
}
f2x<-function(x){
(x-5)*(x-4)+20
}
f1<-function(theta){
#y=(x-4)*(x-3)+10
#r*sin(theta)=(r*cos(theta)-4)*(r*cos(theta)-3)+1
r=0.50*(1/cos(theta))^2*(sin(theta)+7*cos(theta)-sqrt(7*sin(2*theta)-2*cos(2*theta)-1))
r
}
f2<-function(theta){
#y=(x-5)*(x-4)+30
#r*sin(theta)=(r*cos(theta)-5)*(r*cos(theta)-4)+20
r = 0.50*(1/cos(theta))^2*(sin(theta)+9*cos(theta)-sqrt(9*sin(2*theta)-40*cos(2*theta)-39))
r
}
##theta=atan(y/x)
##r=sqrt(x^2+y^2)
#starts
c(0,f1x(0)) #(0,13)----->(pi/2,13)
c(0,f2x(0)) #(0,40)----->(pi/2,40)
#ends
# c(10,f1x(10)) #(10,43)-->(sqrt(1949),atan(43/10))
# c(10,f2x(10)) #(10,50)-->(sqrt(2600),atan(5)+pi)
#Plot
plot(x,f2x(x),ylab="",xlab="", type="l",ylim=c(0,55),xlim=c(-2,12))
lines(x,f1x(x))
linesPolar<-function(fn,theta){
r<-fn(theta)
x=r*cos(theta)
y=r*sin(theta)
lines(x,y,type="l",col="red",lty=3,lwd=2)
}
linesPolar(f1,seq(atan(43/10),(pi/2+0.01),0.01))
linesPolar(f2,seq(atan(4),(pi/2+0.01),0.01))