从等式中绘制一个平面

时间:2017-07-06 07:18:17

标签: 3d shiny

我用Shiny编写了一个代码,但现在我遇到了一件事,我只想问。

在代码中,您将看到在“服务器”端,我想从等式绘制一个平面。但我得到了这个: http://www.onlinemathe.de/forum/Ebenen-Gleichung-durch-2-Winkel

它用德语,但最后你会看到一个例子,它将我引向我的等式。

问题是它首先只是用3D而不是平面绘制一个点!

第二,有没有更好的方法告诉R它应该逐行使用data.frame中的数据?

我想在MATLAB中就像:

data[i,1] and data[i,2]

i+1

以下是代码,请尽可能帮助我!

install.packages("shiny")
install.packages("rgl")
install.packages("plotrix")

library(shiny)
library(rgl)
library(plotrix)

ui <- fluidPage(
    headerPanel("Block Theory 0.1"),
    sidebarPanel(
        numericInput(inputId = "strike", label = "Strike:", value = "", width = "80%", min = 0, max = 360),
        numericInput(inputId = "dip", label = "Dip:", value = "", width = "80%", min = 0, max = 90),
        actionButton(inputId = "add", label = "Add a plane"),
        actionButton(inputId = "plotbutton", label = "Update")
    ),
    mainPanel(  
        rglwidgetOutput(outputId = "plot")
    ),
    verbatimTextOutput(outputId = "log_planes")
)

server <- function(input, output) {
    data_planes <- data.frame()
    makeReactiveBinding("data_planes")  

    observe({
        input$add
        isolate({
            data_planes <<- rbind(data_planes, data.frame(input$strike, input$dip))
            data_planes <<- na.omit(data_planes)
        })
    })  

    output$plot <- renderRglwidget({
        input$plotbutton
        isolate({
            if (i < nrow(data_planes)) {
                phi <- 90 - data_planes[1,1]
                deta <- data_planes[1,2]

                a <- sin(phi)*cos(deta)
                b <- sin(phi)*sin(deta)
                c <- cos(phi)

                planes3d(a,b,c,d = 0)

                i <<- i + 1
            }
            rglwidget() 
        })
    })
    output$log_planes <- renderPrint({print(data_planes)})
}

shinyApp(ui = ui, server = server)

0 个答案:

没有答案