`
9
R FUNKSIYASI YORDAMIDA MURAKKAB 3D OBYEKTLARNI QURISH
Nuraliyev Faxriddin Murodillayevich
“Televizion va media texnologiyalar” kafedrasi mudiri, texnika fanlari doktori,
professor, Muhammad Al-Xorazmiy nomidagi TATU
Inoyatov Mirzayor Baxtiyor ug’li
“Chizma geometriya va kompyuter grafikasi”
kafedrasi assistenti, Islom Karimov nomidagi
Toshkent Davlat Texnika Universiteti
https://doi.org/10.5281/zenodo.13903948
Kirish
R dasturlash tili ko'pincha ma'lumotlarni tahlil qilish va statistik modellashtirish uchun
ishlatiladi, lekin R funksiyada (bundan keyin R deb yuritiladi) 3D grafik va geometrik
modellarni yaratish ham mumkin. Ayniqsa, `rgl` va `plot3D` kabi paketlar yordamida murakkab
3D obyektlarni qurish, ularni manipulyatsiya qilish va turli burchaklardan vizualizatsiya qilish
imkoni mavjud. Ushbu maqolada R funksiyalari yordamida murakkab 3D obyektlarni qanday
qurish mumkinligini batafsil ko'rib chiqamiz.
R da 3D grafikalar uchun asosiy paketlar
R da 3D grafikalar yaratishda keng qo'llaniladigan ikkita asosiy paket mavjud:
1. `rgl` paketi: `rgl` paketi haqiqiy vaqt (real-time) interaktiv 3D grafikalarni yaratish
uchun ishlatiladi. Bu paket OpenGL-ga asoslangan bo'lib, foydalanuvchiga 3D grafikalarni
yaratish, vizualizatsiya qilish va ularni aylantirish imkonini beradi.
2. `plot3D` paketi: `plot3D` statik 3D grafikalar yaratish uchun juda foydali paket. Bu paket
yordamida sirt grafiklari, izochiziqlar, nuqta bulutlari va boshqa murakkab 3D obyektlarni
yaratish mumkin.
Murakkab 3D obyektlarni yaratish jarayoni
1. Boshlang'ich sozlamalar
Avvaliga kerakli paketlarni yuklab olamiz va kutubxonani ishga tushiramiz:
# Kerakli paketlarni o'rnatish va yuklash
install.packages("rgl")
install.packages("plot3D")
library(rgl)
library(plot3D)
2. 3D nuqta buluti yaratish
Nuqta bulutlari - bu ko'plab nuqtalarning fazoda joylashgan grafik ifodasi. 3D fazoda
nuqtalar qanday taqsimlanganini ko'rsatish uchun foydalaniladi. Quyidagi misolda biz random
generator orqali nuqtalar to'plamini hosil qilamiz:
# Tasodifiy 3D nuqtalar to'plami
set.seed(123) # natijalarni qayta ishlab chiqarish uchun
x <- rnorm(100)
y <- rnorm(100)
z <- rnorm(100)
# rgl yordamida nuqta bulutini yaratish
plot3d(x, y, z, col="blue", size=5, type="s", xlab="X o'qi", ylab="Y o'qi", zlab="Z o'qi")
`
10
Yuqoridagi kod 3D nuqta bulutini yaratadi va uni interaktiv tarzda aylantirish mumkin
bo'ladi. Foydalanuvchi grafikani sichqoncha yordamida har xil burchaklardan ko'rishi mumkin.
3. Sirt grafikasi yaratish
Sirt grafikasi 2D matritsa ko'rinishida mavjud bo'lgan qiymatlarni fazoda yuzaga
chiqaradi. Quyidagi misol sirt grafikasi qanday yaratilishini ko'rsatadi:
# Sirt yaratish uchun x va y o'qlari
x <- seq(-10, 10, length.out=50)
y <- seq(-10, 10, length.out=50)
# Sirtning z o'qi
z <- outer(x, y, function(x, y) sin(sqrt(x^2 + y^2)))
# plot3D yordamida sirt grafikasi
surf3D(x, y, z, colkey = TRUE, colvar=z, col="lightblue", xlab="X", ylab="Y", zlab="Z")
Ushbu kod sinusoidal to'lqin sirtini hosil qiladi. `outer` funksiyasi yordamida ikki
o'lchamli matritsa hosil qilinadi, bu sirt grafikasi uchun z o'qi bo'lib xizmat qiladi.
4. 3D ob'ektlarni birlashtirish
Bir nechta 3D obyektlarni bir grafikada birlashtirish mumkin. Masalan, nuqta buluti va
sirt grafikasi birlashtirilgan misol:
# Nuqta buluti
x <- rnorm(50)
y <- rnorm(50)
z <- rnorm(50)
# Sirt
xs <- seq(-5, 5, length.out=50)
ys <- seq(-5, 5, length.out=50)
zs <- outer(xs, ys, function(xs, ys) cos(sqrt(xs^2 + ys^2)))
# rgl yordamida kombinatsiya qilish
plot3d(x, y, z, col="red", size=5, type="s", xlab="X", ylab="Y", zlab="Z")
persp3d(xs, ys, zs, add=TRUE, col="lightgreen")
Bu misol 3D nuqtalar to'plamini va yuzani bir vaqtning o'zida ko'rsatadi. Ushbu
yondashuv katta hajmdagi geometrik ob'ektlarni vizualizatsiya qilish uchun foydali.
5. Ob'ektlarni o'zgartirish va manipulyatsiya qilish
3D grafik ob'ektlar ustida transformatsiyalarni amalga oshirish ham mumkin. Ob'ektlarni
aylantirish, siljitish yoki o'lchamini o'zgartirish orqali grafikni manipulyatsiya qilish mumkin.
Quyidagi misol buni ko'rsatadi:
# Nuqta buluti
x <- rnorm(50)
y <- rnorm(50)
z <- rnorm(50)
# Transformatsiya (aylantirish va o'lchamni o'zgartirish)
open3d()
plot3d(x, y, z, col="blue", size=5)
rgl.viewpoint(theta=30, phi=20, zoom=0.8) # Grafikni aylantirish
`
11
Yuqoridagi kod grafikni aylantirish va kattalashtirish imkonini beradi. `rgl.viewpoint`
funksiyasi yordamida obyektlar turli burchaklardan ko'rish mumkin.
Murakkab obyektlar va amaliy dasturlar
3D grafikalar tibbiyot, biologiya va muhandislik kabi sohalarda keng qo'llaniladi. Quyidagi
misol molekulyar strukturani ko'rsatishga misol bo'lib xizmat qiladi:
# Misol molekula modeli
library(chemCal)
molecule <- molData("C6H12O6") # Glukoza molekulasi
# Molekula modelini chizish
plot3d(molecule$x, molecule$y, molecule$z, col="green", size=8, type="s", xlab="X",
ylab="Y", zlab="Z")
Ushbu kod glukoza molekulasining 3D modelini yaratadi. R dasturlashda bu kabi biologik
modellarni yaratish juda keng imkoniyatlarni taqdim etadi.
Xulosa
R dasturlash tili nafaqat ma'lumotlarni tahlil qilish balki murakkab 3D grafikalar va
ob'ektlarni yaratishda ham kuchli vositadir. `rgl` va `plot3D` kabi paketlar yordamida
foydalanuvchilar statistik modellar va geometriyani 3D ko'rinishda vizualizatsiya qilish
imkoniyatiga ega. Ushbu vositalar R'ning yanada keng qamrovli dasturlash tili ekanligini
ko'rsatadi, chunki ular ilmiy modellashtirish, muhandislik va grafik tahlil uchun ham mos
keladi.
References:
1.
Adler, D., & Murdoch, D. (2020).
rgl: 3D Visualization Using OpenGL
. R paketi hujjatlari.
https://cran.r-project.org/web/packages/rgl/index.html
2.
Soetaert, K. (2013).
plot3D: Plotting Multi-Dimensional Data
. R paketi hujjatlari.
https://cran.r-project.org/web/packages/plot3D/index.html
3.
Wickham, H. (2016).
ggplot2: Elegant Graphics for Data Analysis
. Springer-Verlag New
York.
4.
Xie, Y. (2013).
Dynamic Documents with R and knitr
. Chapman and Hall/CRC.
5.
Peng, R. D. (2015).
R Programming for Data Science
. Leanpub.
6.
Matloff, N. (2011).
The Art of R Programming: A Tour of Statistical Software Design
. No
Starch Press.
7.
Murrell, P. (2006).
R Graphics
. Chapman and Hall/CRC.
