我想以一种似乎是来自圆柱体的投影的方式扭曲平面图像.
我有一个像这样的平面图像:

我想在2D图像中将它显示为这样的东西:

我有点逐步退出几何投影.我参观了像其他一些问题,这可是我不明白我怎么会代表这些圆柱坐标(theta和RHO)为X,Y在笛卡尔(X,Y)平面坐标.你们能帮我一个详细的例子吗?我正在为iPhone编码,我没有使用像OpenCV等任何第三方库.
谢谢一堆.
我只想在opengl中绘制一个圆柱体.我发现了很多样本,但是所有样本都在z轴上绘制了圆柱体.我希望它们在x或y轴上.我怎样才能做到这一点.下面的代码是代码在z方向绘制圆柱体,我不想要它
GLUquadricObj *quadratic;
quadratic = gluNewQuadric();
gluCylinder(quadratic,0.1f,0.1f,3.0f,32,32);
Run Code Online (Sandbox Code Playgroud) 我没有在openCV中找到任何在java中将平面图像转换为圆柱形的示例,我希望它在2d而不是3d中渲染图像,也没有找到任何示例代码或书籍.下面是我想在杯子周围扭曲的图片的图像.
一本好书和示例代码将非常感激.
到目前为止我已经这样做了.建议我的@Amitay使图像凹陷,使用此示例将图像包裹在圆柱体周围但卡在转换上.
import java.io.File;
import org.bytedeco.javacpp.indexer.UByteBufferIndexer;
import org.bytedeco.javacpp.opencv_core.Mat;
import org.bytedeco.javacpp.opencv_core.*;
import static org.bytedeco.javacpp.opencv_highgui.imshow;
import static org.bytedeco.javacpp.opencv_highgui.waitKey;
import static org.bytedeco.javacpp.opencv_imgcodecs.CV_LOAD_IMAGE_COLOR;
import static org.bytedeco.javacpp.opencv_imgcodecs.imread;
/**
*
* @author BTACTC
*/
public class CupWrapping {
Mat image;
Mat dstImage;
int width;
int height;
public CupWrapping(File imageFile) {
image = imread(imageFile.getAbsolutePath(), CV_LOAD_IMAGE_COLOR);
width = image.size().width();
height = image.size().height();
dstImage = new Mat(width, height, image.type());
UByteBufferIndexer sI = image.createIndexer();
UByteBufferIndexer sD = dstImage.createIndexer();
for (int y = 0; …Run Code Online (Sandbox Code Playgroud) 我正在开发一种用于分子三维可视化的小工具.对于我的项目,我选择用"Brad Larson"先生用他的Apple软件" Molecules " 做的事情.一个链接,您可以在其中找到所使用技术的小型演示文稿:Brad Larsson软件演示文稿
为了完成我的工作,我必须计算球体冒充者和圆柱体冒名顶替者.
目前,我已经在另一个教程Lies和Impostors的帮助下成功完成了"Sphere Impostor"
总结球体冒名顶替者的计算:首先我们将"球体位置"和"球体半径"发送到"顶点着色器",这将在相机空间中创建一个始终面向相机的正方形,之后我们发送片段着色器的正方形,我们使用简单的光线跟踪来找到正方形的哪个片段包含在球体中,最后我们计算片段的法线和位置来计算光照.(另一件事我们也写了gl_fragdepth来给我们的冒充球体提供一个很好的深度!)
但是现在我被阻挡在气缸冒名顶替者的计算中,我试图在球体冒充者和圆柱体冒名顶替者之间做一个平行但是我找不到任何东西,我的问题是,对于球体来说它很容易因为球体是总是一样的,无论我们如何看待它,我们总会看到同样的事情:"一个圆圈",另一个是球体完全由数学定义,然后我们可以轻松找到计算光照的位置和法线,并创建我们的骗子.
对于气缸而言,它不是一回事,我没有找到建模可以用作"气缸冒名顶替者"的形状的提示,因为气缸根据我们看到的角度显示许多不同的形状!
所以我的要求是询问你有关"气缸冒名顶替者"问题的解决方案或指示.
我正试图用RMagick(ImageMagick)将图像包裹在一个圆柱体周围,并且我很难过.有几种类型的扭曲(桶,弧,仿射等)似乎是一个良好的开端,但没有什么真正适合.我还发现了很多复杂的命令行(复杂的数学运算),但这对RMagick没有多大帮助.Fred的ImageMagick脚本包含一个cylinderize脚本,但它非常复杂,并且执行了很多命令行操作,我无法转换为RMagick调用.
有人在那之前做过这个或者可以将ImageMagick命令行转换为RMagick调用吗?
(stackoverflow的新手,webgl/three.js的新手,...)
我正在使用three.js r54绘制一个力导向图.节点之间的边缘是THREE.Lines,很好,但是用raycaster不能选择线条.所以我的目标是采用圆柱代替(或同时)线条(也因为我可以做更多的东西:使用纹理,......)
这就是我正在做的放置圆柱体:
// init reference vector
var upVec = new THREE.Vector3(0,1,0);
//---withhin a loop---
// get direction
var direction = startPoint.subSelf(endPoint).clone();
// half length for cylinder height
var halfLength = direction.length() * 0.5;
// get offset
var offset = endPoint.clone().addSelf(direction.clone().multiplyScalar(0.5));
// normalize direc
direction.normalize();
//newUpVec = upVec - (upVec *(dot) direction) * direction - projection of direction
var newUpVec = upVec.clone().subSelf(direction.clone().multiplyScalar(upVec.dot(direction.clone()))).normalize();
var right = newUpVec.clone().crossSelf(direction.clone());
//build rotation matrix
var rot = new THREE.Matrix4(right.x, right.y, right.z, 0,
newUpVec.x, newUpVec.y, …Run Code Online (Sandbox Code Playgroud) 我运行了模拟,它给出了X与不同半径数相对应的数据点,以及Y评估每个半径的角度数.这意味着我有X时间Y,我需要绘制的数据点.
我目前正以非理想的方式绘制它:我使用x和y轴作为轴r和theta轴.这意味着我的数据显示为正弦趋势,其在笛卡尔网格上随半径增加,而不是在物理上表示的圆.这就是我目前正在绘制数据的方式:
surf(r_val, th_val, v_val);
Run Code Online (Sandbox Code Playgroud)
我想要做的是将我的数据绘制在圆柱轴上,例如函数的数据polar(),但是在R3空间中.我宁愿不下载工具箱,也不想修改现有的极地功能; 如果没有其他解决方案,那么我显然最终会这样做.
谢谢你的帮助!G.
另外,我正在使用Matlab 2012a
编辑:
r_val =包含唯一半径的1x8向量
th_val =包含唯一角度的1x16向量
v_val = 8x16矩阵,包含对应于每个位置的电压
注意:(回答后)
这个问题不存在真正理想的解决方案,因为Matlab目前不支持真正的极轴方法.资源在这里找到.