アンダーバストを推定してブラのカップサイズを予想する

MikuHatsune2014-06-08

こんな画像が送られてきた。

これのアンダーバストってどう推定してるの?と聞かれたのでぐぐってみると、乳関数というものが存在しているらしい。説明によると、身長にたいする比率として、理想的なスリーサイズが決まる。胸の大きさはトップとアンダーの差で決まるが、アンダーはウエストも決定要素である。
トップとアンダーの差を求めて、2.5cm刻みで胸のサイズが増減する。
 
というわけでスクリプトをパクって実装した。データはお馴染みのあれ
ラブライブのメンツで見る、エリーチカとスピリチュアルでぶは妥当な感じ、他のメンバーは過小評価な気がした。

oppai <- function(height, bust, waist, correct=FALSE){
	size_eval <- c("AAAカップ未満(無乳)","AAAカップ(微乳)","AAカップ(微乳)","Aカップ(微乳)","Bカップ(普乳)","Cカップ(普乳)","Dカップ(適乳)","Eカップ(巨乳)","Fカップ(巨乳)","Gカップ(爆乳)","Hカップ(爆乳)","Iカップ(爆乳)","Jカップ(魔乳)","Kカップ(魔乳)","Lカップ(魔乳)","Mカップ(魔乳)","Nカップ(超乳)","Oカップ(超乳)","Pカップ(超乳)","Pカップ以上(神乳)")
	cup_size <- c("AAA未満","AAA","AA",LETTERS[1:16],"P以上")
	difference <- (bust - (height * 0.54)) + (((height * 0.38) - waist) * 0.73) + ((height - 158.8) * ifelse(correct, 0.3261, 0.1087))
	u_bust <- bust - (difference + ifelse(height > 158.8 - 23, 17.5, 17.5))
	idx <- c(cut(difference, c(-100, -13.75 + 2.5*(0:18), 100), include.lowest=TRUE))
	canon <- height*c(0.54, 0.38, 0.54)
	names(canon) <- c("bust", "waist", "hip")
	res <- list(input=c(height=155, bust=bust, waist=waist),
	            ideal=canon,
	            u_bust=u_bust,
	            cup=cup_size[idx]
	            )
	return(res)
}
dat <- read.delim("girl.txt")
a <- as.data.frame(t(mapply(function(i) unlist(oppai(dat$height[i], dat$B[i], dat$W[i])[2:4]), seq(nrow(dat)))))
rownames(a) <- dat$name
ll <- subset(dat, type=="LoveLive")
ub <- as.numeric(as.vector(a$u_bust))
lv_idx <- replace(seq(12), 1:4, 4:1)
cup_size <- c("AAA未満","AAA","AA",LETTERS[1:16],"P以上")
cols <- rainbow(length(levels(a$cup)))[lv_idx]

par(mfrow=c(1, 2))
plot(dat$B, ub, pch=16, col=cols[a$cup], xlab="Bust size", ylab="Under bust")
legend("bottomright", legend=levels(a$cup)[lv_idx], col=cols[lv_idx], pch=16)
text(ll$B, ub[as.numeric(rownames(ll))], ll$name)

plot(dat$B, dat$B-ub, pch=16, col=cols[a$cup], xlab="Bust size", ylab="Δ Under bust")
abline(h=-13.75 + 2.5*(0:18), lty=3, col=grey(0.6))
legend("bottomright", legend=levels(a$cup)[lv_idx], col=cols[lv_idx], pch=16, bg="white")
text(ll$B, (dat$B-ub)[as.numeric(rownames(ll))], ll$name)
           ideal.bust ideal.waist ideal.hip   u_bust cup
東條希          84.24       59.28     84.24 67.56996   F
絢瀬絵里        87.48       61.56     87.48 68.49336   E
小泉花陽        84.24       59.28     84.24 67.56996   C
南ことり        85.86       60.42     85.86 66.57166   B
西木野真姫      86.94       61.18     86.94 65.41946   B
高坂穂乃果      84.78       59.66     84.78 66.26386   B
園田海未        85.86       60.42     85.86 66.57166   A
星空凛           83.7        58.9      83.7 66.68606  AA
矢澤にこ        83.16       58.52     83.16 65.07216   A


 
話題のTrajectory detectionでの成長度との相関はどうかと聞かれたのでやったけど、発展途上の女の子たちが入り乱れててきれいに胸の大きさが大きくなっているかというとそうでもないような、そんなような…
Trajectory detectionはf(身長、体重、年齢、スリーサイズ)の関数だがブラ関数はf(身長、ウエスト)なので、その影響か。