2010-03-10 11 views
6

मुझे पता है कि मैटलैब में एक सिलेंडर नामक एक फ़ंक्शन है जो सिलेंडर के लिए बिंदु बनाने के लिए परिधि के साथ बिंदुओं की संख्या और त्रिज्या की लंबाई बनाता है। क्या होगा यदि मैं एक इकाई सिलेंडर नहीं चाहता हूं, और यह भी नहीं चाहता कि यह डिफ़ॉल्ट अक्ष पर केंद्रित हो (उदाहरण के लिए जेड-अक्ष के साथ)? ऐसे सिलेंडर बनाने का सबसे आसान तरीका क्या होगा? अग्रिम में धन्यवाद।धुरी के साथ एक सिलेंडर बनाना अलग-अलग

उत्तर

11

पिछले जवाब ठीक है, लेकिन आप (क्योंकि cylinder अलग x,y,z घटकों के परिणाम आप रोटेशन के लिए आव्यूह गुणन करने के लिए एक थोड़ा काम करने की जरूरत) matlab आप के लिए काम के अधिक करने के लिए मिल सकता है। [xf yf xf] द्वारा बढ़ाया (xf=yf उपयोग जब तक आप एक अण्डाकार सिलेंडर चाहते हैं) सिलेंडर के आधार की [x0 y0 z0] पर सेंटर, उपयोग किया है करने के लिए:

[x y z] = cylinder; 
h=mesh(x*xf+x0,y*yf+y0,z*zf+z0) 

आप भी उसे घुमाने के लिए तो यह साथ मेल नहीं किया गया चाहते हैं जेड-अक्ष, rotate का उपयोग करें। उदाहरण के लिए, डिग्री 90 से x-axis के बारे में बारी बारी से करने, तो यह y- अक्ष, उपयोग के साथ जुड़े है:

rotate(h,[1 0 0],90) 
+0

+1। मेरे अंत में –

+0

+1 भी। धन्यवाद। – stanigator

+0

एक और नोट। मैटलैब फ़ंक्शंस का उपयोग करके जाल बनाने और घूमने के बाद मैं एच से अंक कैसे प्राप्त करूं? – stanigator

5

scaling matrix, translation matrix, और rotation matrix के अपने पसंदीदा संयोजन द्वारा अंक को गुणा करें।

+0

धन्यवाद। वास्तव में मैंने कुछ हद तक किया है, हालांकि उल्लेख किए गए मैट्रिक्स का उपयोग करके अधिक सुंदरता से किया जा सकता है। किसी भी परिवर्तन को प्राप्त करने के एक अच्छे सामान्य तरीके के लिए – stanigator

+0

+1। Matlab विशिष्ट शर्तों में बेहतर समाधान के लिए – Ramashalanka

संबंधित मुद्दे