我想在笛卡尔坐标系上绘制一个圆,其中x-axis
的间隔不等于y-axis
的间隔。
例如,请参阅附加的图片,其中x
位于[0 ... 40]
区间,y
位于[90 ... 107]
区间。
下面是创建图像所需的全功能代码。请记住,布朗运动每次都是随机的,给出另一个y-axis
间隔,因此是一个不同的扭曲圆。
library(sde)
# brown motion
brown.motion <- BM(x=100, t0=0, T=40, N=100) # get brownian motion
# plot bronwian motion
plot(brown.motion, main='Brownian Motion with circle', ylab='Value', xlab='Time')
# circle
# define the points
x1 <- 21
x2 <- 26
y1 <- max(brown.motion) - (max(brown.motion) - min(brown.motion)) / 2
y2 <- max(brown.motion) - (max(brown.motion) - min(brown.motion)) / 3
# calculate the line
m <- (y2 - y1) / (x2 - x1)
xx <- seq(x1, x2, by=0.02)
yy <- m * xx + (y1 - m * x1)
# plot the line
lines(xx, yy)
# plot the center
points(xx[round(length(xx) / 2)], yy[round(length(yy) / 2)])
# calculate the length
eukl.norm.vec <- function(x) sqrt(sum(x^2)) # function euclidean norm
vec1 <- c(x1, y1)
vec2 <- c(x2, y2)
length <- eukl.norm.vec(vec2 - vec1)
# calculate radius for circle
real.radius <- length / 2
# calculate circle
circle.degree <- seq(0, 2*pi, by=0.01)
circle.x <- real.radius * cos(circle.degree) + x1 + real.radius
circle.y <- real.radius * sin(circle.degree) + y1 + real.radius
# plot circle
lines(circle.x, circle.y)
如何围绕中心(单点)绘制圆圈,使圆圈接触两端的线条(线条完全在圆圈内)?
我考虑过乘以一个因子,但到目前为止找不到合适的一个。